[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - A CMR collection may only be used within the transction in w

jklanka do-not-reply at jboss.com
Thu Aug 10 05:05:18 EDT 2006


I have two Entoty Beans (CNTReport and CNTReportAct)
1. CNTReportBean  having following XDoclet reference
 * @ejb.bean name="CNTReport"
 *           display-name="Name for CNTReport"
 *           description="Description for CNTReport"
 *           jndi-name="ejb/CNTReport"
 *           local-jndi-name="ejb/CNTReportLocal"
 *           type="CMP"
 *           transaction-type="Container"
 *           cmp-version="2.x"
 *           primkey-field="cnt_id"
 *           view-type="both"
 * 	     schema = "CNTReportSchema"
 * 
 * @ejb.transaction 
 * type="Required"

 * 
 * @ejb.finder
 * signature="java.util.Collection findAllContacts()"
 * query="SELECT OBJECT(c) FROM CNTReportSchema AS c"
...
...
....

And also CMR Field defined like below 
/**
	 * Getter for CMR Relationship
	 *
	 * @ejb.interface-method   view-type="local"
	 * @ejb.relation           name = "CNTReport-to-CNTReportAct"
	 *                         role-name = "CNTReport-has-Many-CNTReportAct"
	 *                         target-ejb = "CNTReportAct"
	 *                         target-role-name = "CNTReportAct-has-one-CNTReport"
	 *                         target-multiple = "no"
	 * @ejb.transaction 
	 * type="Required"
	 * @return
	 */
	
	
	public abstract java.util.Collection getActions();

	/**
	 * Setter for CMR Relationship
	 *
	 * @ejb.interface-method   view-type="local"
	 */
	public abstract void setActions(java.util.Collection value);



1. CNTReportActBean  having following XDoclet reference

/**
 * @ejb.bean name="CNTReportAct"
 *           display-name="Name for CNTReportAct"
 *           description="Description for CNTReportAct"
 *           jndi-name="ejb/CNTReportAct"
 *           local-jndi-name="ejb/CNTReportActLocal"
 *           type="CMP"
 *           transaction-type="Container"
 *           cmp-version="2.x"
 *           primkey-field="id"
 *           view-type="both"
 * 			 schema = "CNTReportActSchema"
 *  
 * @ejb.transaction 
 * type="Required"
 * 
 * 
And also CMR Field defined like below 
	/**
	 * Getter for CMR Relationship
	 *
	 * @ejb.interface-method   view-type="local"
	 * @ejb.relation           name = "CNTReport-to-CNTReportAct"
	 *                         role-name = "CNTReportAct-has-one-CNTReport"
	 *                         target-ejb = "CNTReport"
	 *                         target-role-name = "CNTReport-has-Many-CNTReportAct"
	 *                         target-multiple = "yes"
	 * @jboss.relation fk-column="cnt_id"
	 *     related-pk-field="cnt_id"
	 * @ejb.transaction 
	 * type="Required"
	 */
	public abstract com.contactreport.CNTReportLocal getContactReport();

	/**
	 * Setter for CMR Relationship
	 *
	 * @ejb.interface-method   view-type="local"
	 */
	public abstract void setContactReport(com.contactreport.CNTReportLocal value);


I am using the following codes in the Servlet to Access the Contact Reports
Collection cntReportDatas=null;	
try {
	cntReportDatas = home.findAllContacts();
    } catch (Exception e) {out.print(e);}
   req.setAttribute("cntReportDatas",cntReportDatas);


Now the cntReportDatas is forwared to JSP page and read. It is working fine. But when I call the getActions() method it gives the following error

java.lang.IllegalStateException: A CMR collection may only be used within the transction in which it was created

I went through so many forums and says that 
"trying to access that CMR in a 'java-bean' which is NOT in the same transaction.

==
I am running this CMP in JBOSS 4.0.2.


Please help on this 






View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3964286#3964286

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3964286



More information about the jboss-user mailing list