У меня очень странная проблема, мы используем jpa 2.0 с аннотациями спящего режима на основе База данных, созданная через JPA DDL, является истинной и MySQL как База данных;JPA 2.0 Provider Hibernate
Я расскажу о некоторых ссылочных классах, а затем о своей значке.
@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 или спящий режим
Здесь немного информации о карте отсутствует. Вы пытаетесь отобразить наследование или используете ли вы какую-то отдельную таблицу PARENT и CHILD с аналогичной структурой? Можете ли вы включить аннотации уровня класса (@Entity и т. Д.), Как они есть у вас. –
Убраны ссылки на Spring MVC, так как это не имеет значения и смущает проблему. – skaffman
спасибо Дэвис да, я забыл разместить эти аннотации, на самом деле у меня есть отдельная таблица для родительского и дочернего с полями из унаследованного класса. я не могу понять, почему он меняет ссылку child-> address в родительском. когда я просто изменяю ссылку адреса для родителя – Rooh