【发布时间】:2015-12-01 11:44:17
【问题描述】:
我想用hibernate 创建一个composite primary key。通常我会选择@IdClass。
但这次我想在复合主键中也使用foreign key。
问题:这可能吗?
例子:
@Entity
class Person {
long id;
}
class CarPK implements Serializable {
private int code;
private String name;
public CarPK(int code, String name) {
this.code = code;
this.name = name;
}
}
@Entity
@IdClass(CarPK.class)
class Car {
@Id
private int code;
@Id
private String name;
//can I also mark "person.id" with @Id?
@ManyToOne
@JoinColumn(name = "fk_person_id", foreignKey = @ForeignKey(name = "fk_person"))
private Person person; //assume car is shared
}
人员参考将在数据库中显示为fk_person_id。是否也可以将此列添加到car 表的primary key 中?
所以我会变得类似于:CONSTRAINT car_pkey PRIMARY KEY (code, name, fk_person_id)?
更新:
@ManyToOne
@JoinColumn(name = "id")
private Person person;
结果:Property of @IdClass not found in entity path.to$Car: id
【问题讨论】:
标签: java hibernate postgresql