For sure you need to do the merge there (or a em.persist - em.merge is for 
overwriting data on a possibly existing entity -I suspect you really want to do 
em.persist here).

Just "new MyEntity()" doesn't really do anything - there is no magic here for 
your entity manager to know that object exists.  You need to put it in the JPA 
session - the only way for that to happen is to load it into the entity 
manager, either by asking the entity manager to persist/merge it (if it isn't 
in the DB yet or you want to overwrite it) or to find/load it (if it already 
exists in the DB)  Once the object is "attached" to the entity manager, THEN 
the magic happens (since its at that point the entity manager knows about your 
object and can manage it).

I don't know much about SEAM, but it sounds like the injected entity POJO isn't 
attached yet.  It sounds like its the same as if you passed in the entity from 
a remote client (which, it too, would not be attached).

If you get passed an entity that you know already exists, to load it into your 
entity manager:

public mySLSBMethod( MyEntity myentity ) {
   // attach myentity to the entity manager
   myentity = entityManager.find(MyEntity.class, myentity.getId());

I tend to only pass primary keys around, especially for APIs that I want my 
remote clients to use:

public mySLSBMethod( int myentityId ) {
   MyEntity me = entityManager.find(MyEntity.class, myentityId);

That's one way to load it - another way is to load it is via a named query.  
Once loaded, now anything you do to myentity will be tracked and when the 
entity manager is flushed, those changes make its way to the DB.

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4116602
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to