Mam bardzo dziwny problem, używamy jpy 2.0 z adnotacjami hibernacji opartymi na Baza danych wygenerowana przez JPA DDL jest prawdziwa, a MySQL jako baza danych;Dostawca JPA 2.0 Hibernate
Będę udostępniać niektóre klasy referencyjne, a następnie moje porblem.
@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
}
jak w kodzie widać, że rodzice i zajęcia dziecko rozszerza Common klasę więc oba mają właściwości adresową i id, problem pojawia się, gdy Zmiana refference adres w klasie nadrzędnej odzwierciedlać samą zmianę wszystkich obiektów podrzędnych w liście a jeśli adres zmiana refference w klasie dziecko następnie połączyć to zmieni adres refference rodzica oraz
nie jestem w stanie dowiedzieć się, czy to jest problem JPA lub hibernacji
Brakuje tu trochę informacji mapujących. Czy próbujesz odwzorować dziedziczenie, czy też właśnie oddzielne tabele PARENT i tabele CHILD o podobnej strukturze? Czy możesz dołączyć adnotacje na poziomie klasy (@Entity itp.) Tak, jak je masz. –
Usunięto odniesienia do Spring MVC, ponieważ nie jest to istotne i dezorientuje problem. – skaffman
dzięki Davisowi Tak, zapomniałem umieścić te adnotacje, właściwie mam oddzielną tabelę dla rodzica i dziecka z polami z dziedziczonej klasy wspólnej. rzeczą, której nie mogę zrozumieć, jest to, dlaczego zmienia ona odniesienie do adresu child-> w rodzicu. kiedy zmieniam tylko adres adresu dla rodzica – Rooh