JPA / Hibernate checks conditions in merge()

Posted by bert on Stack Overflow See other posts from Stack Overflow or by bert
Published on 2010-05-10T09:26:43Z Indexed on 2010/05/11 9:54 UTC
Read the original article Hit count: 188

Filed under:
|

Working with JPA / Hibernate in an OSIV Web environment is driving me mad ;)

Following scenario: I have an entity A that is loaded via JPA and has a collection of B entities. Those B entities have a required field.

When the user adds a new B to A by pressing a link in the webapp, that required field is not set (since there is no sensible default value).

Upon the next http request, the OSIV filter tries to merge the A entity, but this fails as Hibernate complains that the new B has a required field is not set.

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value

Reading the JPA spec, i see no sign that those checks are required in the merge phase (i have no transaction active)

I can't keep the collection of B's outside of A and only add them to A when the user presses 'save' (aka entitymanager.persist()) as the place where the save button is does not know about the B's, only about A.

Also A and B are only examples, i have similar stuff all over the place ..

Any ideas? Do other JPA implementaions behave the same here?

Thanks in advance.

© Stack Overflow or respective owner

Related posts about jpa

Related posts about hibernate