It looks like you are trying to use a not-null foreign key column, which 
is not supported by the CMP 2.0 persistence engine.

-dain

David Goodwin wrote:

> Hi all,
> 
> I have a many to one relationship between module and assessment (one 
> module may have many assessments) in the project I am working on.
> 
> After creating some Modules, i do a getAssessments() and then add to the 
> collection newly created Assessments.
> 
> However when I want to tidy up after the test, I attempt to call 
> .remove() on an assessment and the following error occurs :
> 
> java.rmi.ServerException: Store failed; nested exception is:
>         java.sql.SQLException: ERROR:  ExecReplace: Fail to add null 
> value in not null attribute module_code
> 
> 
> Strangely after calling assessment.remove() the container does an 
> ejbStore... which seems strange to me.
> 
> Could this problem be due to me using transactions wrongly?
> 
> 
> [14:56:21,347,Default] AssessmentBean : ejbCreate()
> [14:56:21,348,Default]  TEST_ASS_1:Hello big 
> world:http://www.aber.ac.uk/ass1:CS99910
> [14:56:21,437,Default] AssessmentBean : ejbCreate()
> [14:56:21,437,Default]  TEST_ASS_2:Hello big world 
> advanced:http://www.aber.ac.uk/ass2:CS99920
> [14:56:21,465,Default] AssessmentBean : ejbCreate()
> [14:56:21,466,Default]  TEST_ASS_3:Hello big world easy 
> level:http://www.aber.ac.uk/ass3:CS99930
> [14:56:21,478,Default] DEBUG : BigTest : Assessments created ...
> [14:56:21,490,Default] DEBUG : BigTest : Assessments associated with 
> module ...
> [14:56:21,497,Default] DEBUG : BigTest : test_Assessment()
> [14:56:21,503,Default] DEBUG : BigTest : tearDown()
> ...
> [14:56:21,521,Default] DEBUG : BigTest :1  Removed assList0
> [14:56:21,524,Default] DEBUG : BigTest :1  Removed assList2
> [14:56:21,528,Default] DEBUG : BigTest :2 Removed assList1
> [14:56:21,538,Default] DEBUG : AssessmentBean : ejbStore()
> [14:56:21,553,Default] java.sql.SQLException: ERROR:  ExecReplace: Fail 
> to add null value in not null attribute module_code
> [14:56:21,553,Default]  at org.postgresql.Connection.ExecSQL(Unknown 
> Source)
> [14:56:21,554,Default]  at 
> org.postgresql.jdbc2.Statement.execute(Unknown Source)
> [14:56:21,554,Default]  at 
> org.postgresql.jdbc2.Statement.executeUpdate(Unknown Source)
> [14:56:21,555,Default]  at 
> org.postgresql.jdbc2.PreparedStatement.executeUpdate(Unknown Source)
> [14:56:21,555,Default]  at 
> 
>org.jboss.resource.adapter.jdbc.local.PreparedStatementInPool.executeUpdate(PreparedStatementInPool.java:881)
> 
> 
> [14:56:21,556,Default]  at 
> 
>org.jboss.ejb.plugins.cmp.jdbc.JDBCUpdateCommand.executeStatementAndHandleResult(JDBCUpdateCommand.java:46)
> 
> 
> [14:56:21,556,Default]  at 
> org.jboss.ejb.plugins.cmp.jdbc.JDBCCommand.jdbcExecute(JDBCCommand.java:102) 
> 
> 
> 
> 
> The code which creates the assessments is :
> 
> 
> Collection assessmentList1 = module1.getAssessments();
> Collection assessmentList2 = module2.getAssessments();
> Collection assessmentList3 = module3.getAssessments();
> AssessmentLocalHome alh = this.getAssessmentLocalHome();
> 
> assList[0] = alh.create(assessmentId_1, moduleCode_1, 
> assessmentDescription_1, assessmentUrl_1, assessmentDateDue_1, 
> assessmentNumberOfMarkers_1);
> assList[1] = alh.create(assessmentId_2, moduleCode_2, 
> assessmentDescription_2, assessmentUrl_2, assessmentDateDue_2, 
> assessmentNumberOfMarkers_2);
> assList[2] = alh.create(assessmentId_3, moduleCode_3, 
> assessmentDescription_3, assessmentUrl_3, assessmentDateDue_3, 
> assessmentNumberOfMarkers_3);
> 
> System.out.println("DEBUG : BigTest : Assessments created ...");
> // module 1 has two assessments (1 and 3)
> // module 2 has one assessment (2)
> // module 3 has none
> assessmentList1.add(assList[0]);
> assessmentList2.add(assList[1]);
> assessmentList1.add(assList[2]);
> System.out.println("DEBUG : BigTest : Assessments associated with module 
> ...");
> 
> assertTrue(module1.getAssessments().contains(assList[0]));   
> assertTrue(module1.getAssessments().contains(assList[2]));      
> assertTrue(module2.getAssessments().contains(assList[1]));
> 
> 
> 
> The code which attempts to remove the assessment's is :
> 
> Collection dud = module1.getAssessments();
> for (int i=0; i<3; i++)
> {
>    if(dud.contains(assList[i]))
>    {
>       dud.remove(assList[i]);
>       System.out.println("DEBUG : BigTest :1  Removed assList"+i);
>    }
> }
> 
> 
> 
> Using Jboss 3.0.0 alpha, with container managed persistance and 
> relationships.
> 
> Thanks in advance for any help
> 
> David.
> 
> 



_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to