mem*_*und 4 java postgresql hibernate
我想创建一个composite primary keywith hibernate. 通常我会去 @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
}
Run Code Online (Sandbox Code Playgroud)
人员参考将在数据库中显示为fk_person_id。是否也可以将此列添加到primary key表中car?
所以我会变得类似于:CONSTRAINT car_pkey PRIMARY KEY (code, name, fk_person_id)?
更新:
@ManyToOne
@JoinColumn(name = "id")
private Person person;
Run Code Online (Sandbox Code Playgroud)
结果是:Property of @IdClass not found in entity path.to$Car: id
是的,您可以将 添加@Id到联接列,但您必须使用IdClass. 我在当前的项目中正在做完全相同的事情。
@Entity
@IdClass(MyIdClass.class)
public class MyObject {
@Id
private String key;
@Column
@Lob
private String value;
@ManyToOne(cascade = CascadeType.PERSIST)
@Id
@JoinColumn(name = "id")
private MyOtherObject otherObject;
...
Run Code Online (Sandbox Code Playgroud)
和
public class MyIdClass implements Serializable {
private long otherObject;
private String key;
...
Run Code Online (Sandbox Code Playgroud)
MyOtherObject.idlong在这种情况下是 a 。
| 归档时间: |
|
| 查看次数: |
3941 次 |
| 最近记录: |