Tengo un problema muy extraño que estamos utilizando jpa 2.0 con anotaciones de hibernación basadas en Base de datos generada a través de JPA DDL es verdadera y MySQL como base de datos;proveedor JPA 2.0 Hibernate
proporcionaré algunas clases de referencia y luego mi porblema.
@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
}
como en el código se puede ver que los padres y las clases hijas se extiende clase común por lo tanto tienen la propiedad de dirección y de identificación, el problema se produce cuando el cambio del refference dirección en la clase padre que reflejan mismo cambio en todos los objetos secundarios en la lista y si la dirección de cambio refference en la clase del niño y luego fusionar el que va a cambiar la dirección refference de los padres, así
no soy capaz de averiguar es que es problema de la APP o hibernación
Falta aquí un poco de información de mapeo. ¿Está intentando mapear la herencia o simplemente qué separa la tabla de PADRES y las tablas de NIÑOS con una estructura similar? ¿Puedes incluir las anotaciones de nivel de clase (@Entity, etc.) tal como las tienes? –
Se eliminaron las referencias a Spring MVC, ya que no es relevante y se confunde el problema. – skaffman
gracias Davis sí me olvidé de colocar estas anotaciones, en realidad estoy teniendo una tabla separada para padres e hijos con campos heredados de clases comunes. Lo que no puedo entender es por qué cambia la referencia de child-> address en parent. cuando solo cambio la referencia de dirección para el padre – Rooh