У меня очень странная проблема: мы используем jpa 2.0 с аннотациями гибернации на основе База данных, сгенерированная с помощью JPA DDL, верна, а MySQL - как база данных;
я предоставлю несколько ссылочных классов, а затем свою задачу.
@MappedSuperclass
public abstract class Common implements serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false)
private Long id;
@ManyToOne
@JoinColumn
private Address address;
//with all getter and setters
//as well equal and hashCode
}
@Entity
public class Parent extends Common{
private String name;
@OneToMany(cascade = {CascadeType.MERGE,CascadeType.PERSIST}, mappedBy = "parent")
private List<Child> child;
//setters and rest of class
}
@Entity
public class Child extends Common{
//some properties with getter/setters
}
@Entity
public class Address implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false)
private Long id;
private String street;
//rest of class with get/setter
}
как в коде, вы можете видеть, что родительский и дочерний классы расширяют общий класс, поэтому оба имеют свойство адреса и идентификатор , проблема возникает при изменении ссылки на адрес в родительском классе, она отражает такое же изменение во всех дочерних объектах в списке, и если изменить ссылку на адрес в дочернем классе, то при слиянии она также изменит ссылку на адрес родительского класса
Я не могу выяснить, это проблема jpa или спящего режима