The bug is in CMP. Many-to-many relationships are not working.
Though, the tests-db are passing successfully.
The bug was introduced by the following change (this is not a real
cvs diff):

   public boolean isModified(EntityEnterpriseContext ctx)
   {
-     return isModifiedCommand.execute( ctx );
+     return !(getEntityBridge().getDirtyFields(ctx).isEmpty());
   }

Currently, EntityContainer.storeEntity() must always be called.
Current implementation is:
   public void storeEntity(EntityEnterpriseContext ctx) throws Exception
   {
      if (ctx.getId() != null)
      {
         if(getPersistenceManager().isModified(ctx)) {
            getPersistenceManager().storeEntity(ctx);
         }
      }
   }

isModifiedCommand.execute( ctx ) always returns true. Thus, in
pre-changed version storeEntity() was always called.

Proposed change calls entityStore() only if cmp fields or cmr with
foreign keys were changed. But it misses many-to-many.

And the change doesn't make sense because in JDBCStoreEntityCommand
dirty fields are checked and entity is updated accordingly.

The reason tests were passed successfully is that, all the operations
were run in one transaction dealing only with cached values.

So, we need to change isModified back and, probably, correct the
tests.
Unfortunately, currently sf.net is not available the whole day.

alex




-------------------------------------------------------
This sf.net email is sponsored by: Influence the future 
of Java(TM) technology. Join the Java Community 
Process(SM) (JCP(SM)) program now. 
http://ad.doubleclick.net/clk;4729346;7592162;s?http://www.sun.com/javavote
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to