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

Reply via email to