Soy nuevo en APP y yo estoy tratando de asignar una base de datos existente. Los archivos se cargan correctamente individualmente pero las relaciones no funcionan correctamente. Cualquier ayuda sería apreciada.asignación de una clave externa compuesta en JPA 2.0
Java
@Entity
@IdClass(ParentKey.class)
public class Parent {
@Id
@Column(name="code")
private String code;
@Id
@Column(name="id")
private int id;
@OneToMany(mappedBy="parent")
private List<Child> children = new ArrayList<Child>();
}
public class ParentKey {
private String code;
private int id;
}
@Entity
@IdClass(ChildKey.class)
public class Child {
@Id
@JoinColumns({
@JoinColumn(name="code")
@JoinColumn(name="id")
})
private Parent parent;
@Id
@Column(name="index")
private int index;
}
public class ChildKey {
private String code;
private int id;
private int index;
}
SQL
create table Parent(
code char(4) not null,
id int not null,
primary key(code,id)
);
create table Child(
code char(4) not null,
id int not null,
index int not null,
primary key(code, id, index),
foreign key(code, id) references Parent(code,id)
);
edición 1: añadir las clases ChildKey y ParentKey.
me olvidó añadir los @IdClass a mi ejemplo la primera vez, pero ahora se ha corregido. Gracias por el enlace, pero no tiene un ejemplo de clave principal que incluya una clave externa. Necesito un ejemplo más complejo que represente la relación dada en el ejemplo anterior. –
Sí lo hace. Address.PK tiene Account como parte de su PK. Su ChildKey es incorrecta – DataNucleus
Tiene razón; No lo vi cuando lo leí. Terminé usando la herramienta de mapeo inverso de OpenJPA y me dio la solución. Gracias por tu ayuda. –