I am creating an entity bean using CMP 1.1 as Jrun's CMP2.0 doesnot integrate with existing tables. I have two finder methods for the bean, findByPrimaryKey and findbyCustomerId. I am having a problem gettin the findbyCustomerId which is returning a collection of objects. I am making use of local
EJB objects.
Home Interface:
public interface CustomerHome extends javax.ejb.EJBLocalHome{
public Customer findByPrimaryKey(CustomerKey key) throws javax.ejb.FinderException;
public Collection findByCustomerId(int key) throws javax.ejb.FinderException;
}
Local Interface:
public interface Customer extends javax.ejb.EJBLocalObject{
public int getCustomerId();
public int getCustIncome();
public int getAddress();
public void setCustomerId(int arg);
public void setCustIncome(int arg);
public void setAddress(int arg);
}
The bean class is nothing but provides the implementation ( getters and setters )for the interface with the abstract definitions for other callback methods.
I have a helper method which I am using to create the home objects and define some methods.
public
String getDataFields(){
String fieldName = "";
Collection custcoll;
try {
CustomerHome custh = (CustomerHome)context.lookup("local/ejb/Customer");
custcoll= custhome.findByCustomerId(customerId);
int size = custcoll.size();
System.out.println("collection size: " + size);
Iterator iterator = custcoll.iterator();
while(iterator.hasNext()){
System.out.println("inside iterator");
Customer cust1 = (Customer)iterator.next();
if(cust1!=null)
fieldName=cust1.getColumnName();
System.out.println("fieldName");
}
} catch (FinderException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
return fieldName;
}
01/18 16:16:26 error nested exception is: jrunx.persistence.LoadingException: SELECT * FROM Customer_Audit WHERE CUSTOMER_ID=?
javax.ejb.NoSuchObjectLocalException: nested exception is: jrunx.persistence.LoadingException: SELECT * FROM Customer_Audit WHERE REQUEST_ID=?
at jrun.ejb.interceptors.EntitySynchronizationInterceptor.invokeObjectMethod(EntitySynchronizationInterceptor.java:78)
at jrun.ejb.interceptors.EntityInstanceInterceptor.invokeObjectMethod(EntityInstanceInterceptor.java:233)
at jrun.ejb.interceptors.ContainerManagedTransactionInterceptor.invokeRequired(ContainerManagedTransactionInterceptor.java:304)
at jrun.ejb.interceptors.ContainerManagedTransactionInterceptor.invokeTransactedMethod(ContainerManagedTransactionInterceptor.java:140)
In the log files i get the message printing the size of the collection returned by the finder method but somehow the EJB reference the client is gettin is invalid.
Your help would be greatly appreciated. Please provide your suggestions to help solve this problem.