Will Dazey created OPENJPA-2874: ----------------------------------- Summary: Embeddable objects are not updated and orphaned references removed Key: OPENJPA-2874 URL: https://issues.apache.org/jira/browse/OPENJPA-2874 Project: OpenJPA Issue Type: Bug Components: jpa Affects Versions: 2.2.2 Reporter: Will Dazey
Very similar to https://github.com/hibernate/hibernate-orm/pull/3817. Tested on 2.2.2 and I could not find an existing bug that fixed this already. Entities: ``` @Entity public class RaceDriver { @Id private Integer id; @Embedded private Car car; private String name; } @Embeddable public class Car { @Id private Integer id; @OneToOne(orphanRemoval = true, fetch = FetchType.LAZY) private Engine engine; @Column private String color; } @Entity public class Engine { @Id private Integer id; private Integer horsePower; } ``` Test: ``` em.getTransaction().begin(); final Engine engine = new Engine( 1, 275 ); final Car car = new Car(1, engine, "red"); final RaceDriver raceDriver = new RaceDriver(1, "Bob", car); em.persist( engine ); em.persist( raceDriver ); em.getTransaction().commit(); em.clear(); em.getTransaction().begin(); final RaceDriver raceDriverFind = em.find( RaceDriver.class, 1); final Car carFind = raceDriverFind.getCar(); //check, that at the moment the engine exists Assert.assertNotNull(carFind.getEngine()); //update parent entity raceDriverFind.setName("Ted"); //update the embeddable car.setColor("green"); //orphan the engine object car.setEngine( null ); em.getTransaction().commit(); ``` Trace: ``` UPDATE RaceDriver SET name = ? WHERE id = ? [params=(String) Ted, (int) 1] ``` The issue is that OpenJPA is not updating the embeddable values on transaction commit. Also, OpenJPA is not removing the orphaned Engine reference. -- This message was sent by Atlassian Jira (v8.3.4#803005)