Help, CMR deployed, but not link together
ivanisevic Oct 11, 2004 4:51 AMI got a problem on the relation 1-many MCP/CMR
there is not problem when i was deploy the EJB
when the client get the teacher from the student or get the students from teacher. it return 0 size collection from teacher and null teacher from student..can anybody help me??????????
beside the database connection is ok since it can store record that I have made.
----------------
database
teacher
id : string (pk)
name : string
student
id : string (pk)
name : string
teacherId : string (fk)
TeacherBean
/*
* Created on 2004/10/11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package school;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
/**
* @author ivanisevic
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public abstract class TeacherBean implements EntityBean{
public EntityContext context;
//access method for cmp
public abstract String getId();
public abstract void setId(String id);
public abstract String getName();
public abstract void setName(String name);
//access method for cmr
public abstract Collection getStudent();
public abstract void setStudent(Collection student);
public ArrayList getStudentList() {
try{
ArrayList list = new ArrayList();
Iterator c = getStudent().iterator();
while (c.hasNext()) {
list.add((Student)c.next());
}
return list;
}catch(Exception e){return new ArrayList();}
}
public String ejbCreate(String id, String name) throws CreateException{
return create(id, name);
}
private String create(String id,String name) throws CreateException {
setId(id);
setName(name);
return id;
}
public void ejbPostCreate(String id , String name) throws CreateException{}
public String ejbCreate(String id) throws CreateException{
return create(id, "");
}
public void ejbPostCreate(String id) throws CreateException{}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbActivate()
*/
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbLoad()
*/
public void ejbLoad() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbPassivate()
*/
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbRemove()
*/
public void ejbRemove() throws RemoveException, EJBException,
RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbStore()
*/
public void ejbStore() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#unsetEntityContext()
*/
public void unsetEntityContext() throws EJBException, RemoteException {
context = null;
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext)
*/
public void setEntityContext(EntityContext ctx) throws EJBException,RemoteException {
context = ctx;
}
}
StudentBean
/*
* Created on 2004/10/11
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package school;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
/**
* @author ivanisevic
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public abstract class StudentBean implements EntityBean {
private EntityContext context;
//access method for cmp
public abstract String getId();
public abstract void setId(String id);
public abstract String getName();
public abstract void setName(String name);
public abstract String getTeacherId();
public abstract void setTeacherId(String teacherId);
//access method for cmr
public abstract Teacher getTeacher();
public abstract void setTeacher(Teacher teacher);
public String ejbCreate(String id, String name) throws CreateException{
return create(id, name,"");
}
private String create(String id,String name, String teacherId) throws CreateException {
setId(id);
setName(name);
setTeacherId(teacherId);
return id;
}
public void ejbPostCreate(String id , String name) throws CreateException{}
public String ejbCreate(String id) throws CreateException{
return create(id, "","");
}
public void ejbPostCreate(String id) throws CreateException{}
public String ejbCreate(String id, String name, String teacherId) throws CreateException{
return create(id, name, teacherId);
}
public void ejbPostCreate(String id, String name, String teacherId) throws CreateException{}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbActivate()
*/
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbLoad()
*/
public void ejbLoad() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbPassivate()
*/
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbRemove()
*/
public void ejbRemove() throws RemoveException, EJBException,
RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#ejbStore()
*/
public void ejbStore() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#unsetEntityContext()
*/
public void unsetEntityContext() throws EJBException, RemoteException {
context = null;
}
/* (non-Javadoc)
* @see javax.ejb.EntityBean#setEntityContext(javax.ejb.EntityContext)
*/
public void setEntityContext(EntityContext ctx) throws EJBException,RemoteException {
context = ctx;
}
}
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"> <display-name xml:lang="zh">school</display-name> <enterprise-beans> <entity> <ejb-name>TeacherBean</ejb-name> <local-home>school.LocalTeacherHome</local-home> <local>school.LocalTeacher</local> <home>school.TeacherHome</home> <remote>school.Teacher</remote> <ejb-class>school.TeacherBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.String</prim-key-class> <reentrant>false</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>TeacherBean</abstract-schema-name> <cmp-field> <description xml:lang="zh">no description</description> <field-name>name</field-name> </cmp-field> <cmp-field> <description xml:lang="zh">no description</description> <field-name>id</field-name> </cmp-field> <primkey-field>id</primkey-field> <security-identity> <use-caller-identity/> </security-identity> </entity> <entity> <ejb-name>StudentBean</ejb-name> <local-home>school.LocalStudentHome</local-home> <local>school.LocalStudent</local> <home>school.StudentHome</home> <remote>school.Student</remote> <ejb-class>school.StudentBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>java.lang.String</prim-key-class> <reentrant>false</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>StudentBean</abstract-schema-name> <cmp-field> <description xml:lang="zh">no description</description> <field-name>teacherId</field-name> </cmp-field> <cmp-field> <description xml:lang="zh">no description</description> <field-name>name</field-name> </cmp-field> <cmp-field> <description xml:lang="zh">no description</description> <field-name>id</field-name> </cmp-field> <primkey-field>id</primkey-field> <security-identity> <use-caller-identity/> </security-identity> </entity> </enterprise-beans> <relationships> <ejb-relation> <ejb-relation-name>Student-Teacher</ejb-relation-name> <ejb-relationship-role> <multiplicity>One</multiplicity> <relationship-role-source> <ejb-name>TeacherBean</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>student</cmr-field-name> <cmr-field-type>java.util.Collection</cmr-field-type> </cmr-field> </ejb-relationship-role> <ejb-relationship-role> <multiplicity>Many</multiplicity> <relationship-role-source> <ejb-name>StudentBean</ejb-name> </relationship-role-source> <cmr-field> <cmr-field-name>teacher</cmr-field-name> </cmr-field> </ejb-relationship-role> </ejb-relation> </relationships> </ejb-jar>
jbosscmp-jdbc.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd"> <jbosscmp-jdbc> <defaults> <datasource>java:/MySqlDS</datasource> <datasource-mapping>mySQL</datasource-mapping> </defaults> <enterprise-beans> <entity> <ejb-name>TeacherBean</ejb-name> <create-table>true</create-table> <remove-table>true</remove-table> <table-name>teacher</table-name> <cmp-field> <field-name>id</field-name> <column-name>id</column-name> </cmp-field> <cmp-field> <field-name>name</field-name> <column-name>name</column-name> </cmp-field> </entity> <entity> <ejb-name>StudentBean</ejb-name> <create-table>true</create-table> <remove-table>true</remove-table> <table-name>student</table-name> <cmp-field> <field-name>id</field-name> <column-name>id</column-name> </cmp-field> <cmp-field> <field-name>name</field-name> <column-name>name</column-name> </cmp-field> <cmp-field> <field-name>teacherId</field-name> <column-name>teacherId</column-name> </cmp-field> </entity> </enterprise-beans> <relationships> <ejb-relation> <ejb-relation-name>Student-Teacher</ejb-relation-name> <foreign-key-mapping/> <ejb-relationship-role> <ejb-relationship-role-name>TeacherBean_student</ejb-relationship-role-name> <key-fields> <key-field> <field-name>id</field-name> <column-name>teacherId</column-name> </key-field> </key-fields> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>StudentBean_teacher</ejb-relationship-role-name> <key-fields/> </ejb-relationship-role> </ejb-relation> </relationships> </jbosscmp-jdbc>