[jboss-user] [EJB 3.0] - Not understanding detached entities and merge()

SmokingAPipe do-not-reply at jboss.com
Wed Feb 14 20:46:24 EST 2007


Here's the situation:

I have an entity that refers to other entities, like this:

@Entity public class Invoice implements Serializable {
  |    @ManyToOne private transient Customer customer;
  | }

It must implement Serializable so I can send it to message queues.

I labeled the customer field as transient, because I don't want it to serialize and send the entire Customer object every time (that object has a bunch of its own fields).

So, because that's transient, this Invoice entity shows up, is de-seriaiized, and the customer field is null of course.

I then do 

invoice = entityManager.merge(invoice); 

to re-attach this now-detached entity.  But when I do that, the customer field gets set to null in the DB.  It is taking the state from the un-serialized object and writing over what's in the DB.

That's not what I want it to do, of course.

What's the right way to do this kind of thing?  An easy work around I have is to use entityManager.find(Invoice.class, invoice.getId()) but that seems wrong.

Ideas?


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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4016805



More information about the jboss-user mailing list