Spring和Hibernate:如何声明复合键的连接(使用注释)?

Spring和Hibernate:如何声明复合键的连接(使用注释)?,hibernate,join,annotations,Hibernate,Join,Annotations,我需要将项目的“最后版本”编号加入表Project\U version。 如何使用注释@JoinColumn等声明它 我的表格“项目””: 我的表格“Project\u version”(主键=Project\u id+version\u id): 我的bean“Project”:我需要声明属性“LastVersion\u id”以加入Project\u版本: @Id private Integer Project_id; private String Title ... @ManyToOne(

我需要将项目的“最后版本”编号加入表Project\U version。 如何使用注释@JoinColumn等声明它

我的表格“项目””:

我的表格“Project\u version”(主键=Project\u id+version\u id):

我的bean“Project”:我需要声明属性“LastVersion\u id”以加入Project\u版本:

@Id
private Integer Project_id;
private String Title
...
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="LastVersion_id")
                    // How to declare the join to (Project_id + Version_id) ?
private Project_version pv;

好的,我终于找到了答案:

@Id
private Integer Project_id;
private String Title;
// ...
@MapsId("Project_id")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
    @JoinColumn(name="Project_id", referencedColumnName="Project_id"),
    @JoinColumn(name="LastVersion_id", referencedColumnName="Version_id")
})
private Project_version pv;

请注意,
@MapsId
是绝对必需的,否则会出现错误“实体映射中的重复列”

好的,我终于找到了答案:

@Id
private Integer Project_id;
private String Title;
// ...
@MapsId("Project_id")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
    @JoinColumn(name="Project_id", referencedColumnName="Project_id"),
    @JoinColumn(name="LastVersion_id", referencedColumnName="Version_id")
})
private Project_version pv;

请注意,
@MapsId
是绝对必需的,否则会出现错误“实体映射中的重复列”

没错,这与Spring无关。但是Hibernate更常用于Spring。没错,这与Spring无关。但冬眠更常用于春天。
@Id
private Integer Project_id;
private String Title;
// ...
@MapsId("Project_id")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
    @JoinColumn(name="Project_id", referencedColumnName="Project_id"),
    @JoinColumn(name="LastVersion_id", referencedColumnName="Version_id")
})
private Project_version pv;