2015-12-01 125 views
0

我想创建一个composite primary keyhibernate。通常我会去@IdClass如何在复合主键中使用外键?

但是这次我想在组合主键内使用foreign key

问题:这是可能的吗?

实施例:

的人参考将在数据库显示为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

回答

1

是的,你可以在@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; 
... 


public class MyIdClass implements Serializable { 

    private long otherObject; 
    private String key; 

... 

MyOtherObject.id在这种情况下一个long

+0

我尝试了建议,但它不起作用。请参阅我的更新。 – membersound

+0

您是否将@Id添加到加入列? – ftr