Hi there, I'm puzzled, am I overlooking something here, or is this a bug.
jboss 3.0.0beta, JDK1.3.0, mySQL 3.23.47, mm-mysql-2.0.11, WinNT 4.0 SP6a I have a simple scheme, 2 entity beans (CMP), A (Workplace) and B (Booking), related One to Many, like A----*B, and a session bean C (Booker) which act as a session facade to create B objects that need to be related to A objects. B has a CMR field, theA (theWorkplace). There is a create method for B in BLocalHome, which takes as an argument (a.o.) an ALocal. In B's ejbCreate I set the CMP-fields, in ejbPostCreate I set the CMR field theA. The create method of BLocalHome is called from within the session bean C, giving me as returnvalue a BLocal object. This is the setup, now the problem. When my session bean C creates the B (and tries to link it to the A) and doesn't do anything more after that (simply returns), the database doesn't get updated, no UPDATE sql statement in the jboss-log to set the FK-column B.theA to A's PK! (i also use a SQL spy (P6Spy) to see all SQL going to the DB, nada there either!) 2002-03-01 17:06:23,656 INFO [Default] BookingBean::ejbCreate null 2002-03-01 17:06:23,656 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Create: pk=1014998783656 2002-03-01 17:06:23,656 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Executing SQL: SELECT COUNT(*) FROM Booking WHERE id=? 2002-03-01 17:06:23,656 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014998783656 2002-03-01 17:06:23,666 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Executing SQL: INSERT INTO Booking (id, date, person, workplace) VALUES (?, ?, ?, ?) 2002-03-01 17:06:23,666 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014998783656 2002-03-01 17:06:23,666 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.date] Set parameter: index=2, jdbcType=DATE, value=Mon Feb 25 00:00:00 GMT+01:00 2002 2002-03-01 17:06:23,686 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.person] Set parameter: index=3, jdbcType=VARCHAR, value=Joeri Leemans 2002-03-01 17:06:23,686 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=4, jdbcType=BIGINT, value=NULL 2002-03-01 17:06:23,686 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Create: Rows affected = 1 2002-03-01 17:06:23,706 INFO [Default] BookingBean::ejbPostCreate 1014998783656 2002-03-01 17:06:23,706 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.Workplace] RESET PERSISTENCE CONTEXT: id=1014998783475 2002-03-01 17:06:23,706 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] load data: entity=Workplace pk=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] No preload data found: entity=Workplace pk=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Workplace] Default eager-load for entity 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Workplace] Executing SQL: SELECT name, company, floor FROM Workplace WHERE (id=?) 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.id] Set parameter: index=1, jdbcType=BIGINT, value=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.name] Get result: index=1, javaType=java.lang.String, Simple, value=BRFI1-2-034 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.compan y] Get result: index=2, javaType=java.lang.String, Simple, value=Wemmel 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.floor] Get result: index=3, javaType=int, Simple, value=2 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.Workplace.Booking_ workplace] Read ahead cahce load: cmrField=Booking_workplace pk=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] load data: entity=Workplace pk=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] No preload data found: entity=Workplace pk=1014998783475 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCommand.Workplace] Executing SQL: SELECT id FROM Booking WHERE (workplace=?) 2002-03-01 17:06:23,716 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014998783475 2002-03-01 17:06:23,726 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Workplace] Store command NOT executed. Entity is not dirty: pk=1014998783475 When my session bean C creates the B (and tries to link it to the A) and afterwards calls another method on the newly created B (it seems it could by any method, like theBLocalObject.getPrimaryKey(), or a businessmethod like the businessmethod void touch() defined in BLocal), the database is updated!!!! I have an SQL UPDATE statement then in my log, tough only after i called my own touch method. End result is perfectly like expected! 2002-03-01 17:15:50,871 INFO [Default] BookingBean::ejbCreate null 2002-03-01 17:15:50,871 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Create: pk=1014999350871 2002-03-01 17:15:50,871 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Executing SQL: SELECT COUNT(*) FROM Booking WHERE id=? 2002-03-01 17:15:50,871 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014999350871 2002-03-01 17:15:50,881 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Executing SQL: INSERT INTO Booking (id, date, person, workplace) VALUES (?, ?, ?, ?) 2002-03-01 17:15:50,881 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014999350871 2002-03-01 17:15:50,881 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.date] Set parameter: index=2, jdbcType=DATE, value=Mon Feb 25 00:00:00 GMT+01:00 2002 2002-03-01 17:15:50,881 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.person] Set parameter: index=3, jdbcType=VARCHAR, value=Joeri Leemans 2002-03-01 17:15:50,881 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=4, jdbcType=BIGINT, value=NULL 2002-03-01 17:15:50,901 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Booking] Create: Rows affected = 1 2002-03-01 17:15:50,911 INFO [Default] BookingBean::ejbPostCreate 1014999350871 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.Workplace] RESET PERSISTENCE CONTEXT: id=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] load data: entity=Workplace pk=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] No preload data found: entity=Workplace pk=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Workplace] Default eager-load for entity 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Workplace] Executing SQL: SELECT name, company, floor FROM Workplace WHERE (id=?) 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.id] Set parameter: index=1, jdbcType=BIGINT, value=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.name] Get result: index=1, javaType=java.lang.String, Simple, value=BRFI1-2-034 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.compan y] Get result: index=2, javaType=java.lang.String, Simple, value=Wemmel 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Workplace.floor] Get result: index=3, javaType=int, Simple, value=2 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.Workplace.Booking_ workplace] Read ahead cahce load: cmrField=Booking_workplace pk=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] load data: entity=Workplace pk=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Workplace] No preload data found: entity=Workplace pk=1014999350701 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCommand.Workplace] Executing SQL: SELECT id FROM Booking WHERE (workplace=?) 2002-03-01 17:15:50,921 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014999350701 2002-03-01 17:15:50,931 INFO [Default] BookingBean::touch 1014999350871 2002-03-01 17:15:50,941 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Workplace] Store command NOT executed. Entity is not dirty: pk=1014999350701 2002-03-01 17:15:50,941 INFO [Default] BookingBean::ejbStore 1014999350871 2002-03-01 17:15:50,941 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Booking] Executing SQL: UPDATE Booking SET workplace=? WHERE id=? 2002-03-01 17:15:50,941 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=1, jdbcType=BIGINT, value=1014999350701 2002-03-01 17:15:50,941 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.Booking.id] Set parameter: index=2, jdbcType=BIGINT, value=1014999350871 2002-03-01 17:15:50,941 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCommand.Booking] Create: Rows affected = 1 What am I doing wrong? Sam _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user