@Entity @Table(name = "plog") public class Plog implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name = "id") private long id; @Version @Column(name = "version") private Integer version; @OneToOne @JoinColumn(name = "tlog", referencedColumnName = "id", nullable = true) private Tlog tlog; //getters & setters removed
@Entity @Table(name = "tlog") public class Tlog implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Version @Column(name = "version") private Integer version; @OneToOne @JoinColumn(name = "plog", referencedColumnName = "id", nullable = true) private Plog plog; //getters & setters removed
@EJB private MyEjb ejb; Plog plog = new Plog(); ejb.persist(plog); // just calls EntityManager.persist() Tlog tlog = new Tlog(); tlog.setPlog(plog); ejb.persist(tlog); // do some work, changes tlog tlog = ejb.merge(tlog); // returns newly merged entity plog.setTlog(tlog); ejb.merge(plog); // *** integrity constraint violation here - sometimes!