It looks like your problem is that the Exam is new, yet the Person is
existing and the existing Entity gets ignored when cascading the persist
operation. I believe this is working as expected.
As long as your relationships are set to CascadeType.ALL, you could always
change your em.persist(exam); to em.merge(exam);. That would take care of
persisting the new exam, and it would also cascade the merge call to the
person.
Thanks,
Rick
On Mon, Apr 8, 2013 at 11:44 AM, José Luis Cetina <maxtorzito@gmail.com>wrote:
> Hi. I have a problem with insert and updating a reference in the same
> entity.
>
> Im trying to insert a new object (Exam) that has a reference to another
> object (Person) and at the same time i want to update an attribute
> (birthDate) of the Person object. The update never happens although i
> set CascadeType to ALL. The only way this works is doing a persist and
> after that a merge operation. Is this normal? Do i have to change
> something??
>
> I dont like the idea of a "manual update" using merge in the Person object
> because i don't know how many objects (child object of Exam) the user want
> to update.
>
> Entities:
>
> public class Exam{
> @ManyToOne(cascade= CascadeType.ALL)
> @JoinColumn(name = "person_id")
> public Person person;
> ......
> }
>
> public class Person{
> private Date birthDate;
> @OneToMany(mappedBy = "person")
> private List<Exam> exams
> .......
> }
>
> public class SomeClass{
> public void someMethod(){
> exam = new Exam()
> person.setBirthDate(new Date());
> exam.setPerson(person);
> someEJB.saveExam(exam);
> }
> }
>
> public class someEJB(){
>
> public void saveExam(Exam exam){
> ejbContext.getUserTransaction().begin();
> em.persist(exam);
> //THIS WORKS
> em.merge(exam.getPerson());
> ejbContext.getUserTransaction().commit();
> }
>
> }
>
> Do i have to use the MERGE method for every child object?
>
>
> Here is the same question from other user:
>
> http://stackoverflow.com/questions/11029260/jpa-with-jta-persist-entity-and-merge-cascaded-child-entities
>
--
*Rick Curtis*
|