Hibernate将成员变量名称添加到SecondaryTable上的joinColumn的生成SQL

时间:2015-10-15 13:28:18

标签: java spring hibernate

我有一个包含这些表格的实体:

@Entity
@Table(name = "PM_ADJ_MULTI_YR_DETAILS")
@SecondaryTables(
{
@SecondaryTable(name = "PM_RPT_MASTER",   pkJoinColumns = @PrimaryKeyJoinColumn(name = "INCTV_APP_SAK")),
@SecondaryTable(name = "PM_INCTV_APP",    pkJoinColumns = @PrimaryKeyJoinColumn(name = "INCTV_APP_SAK")),
@SecondaryTable(name = "PM_ADJ_MULTI_YR", pkJoinColumns = @PrimaryKeyJoinColumn(name = "MULTI_YR_ADJ_SAK"))
}
)

在这个实体上我有一个成员变量如下:

@ManyToOne
@JoinColumn(name = "MMIS4_IND", table = "PM_ADJ_MULTI_YR")
private MultiYrAdjMmis4Ind mmis4Ind;

Hibernate将成员变量名称添加到生成的SQL中,如下所示:

AND t1.MMIS4IND_MMIS4_IND = t4.MMIS4_IND(+)

这应该是:

AND t1.MMIS4_IND = t4.MMIS4_IND(+)

我们正在使用javax.persistence-2.0.0.jar和Spring 3.0.2。

1 个答案:

答案 0 :(得分:0)

仅供参考:在https://issues.apache.org/jira/browse/OPENJPA-2157?jql=text%20~%20%22joinColumn%20on%20secondarytable%22

找到此问题的解决方案/解决方法

显然已知OpenJPA存在问题(我们使用的是OpenJPA v2.0.0)。

对于解决方案/解决方法,您只需更改persistence.xml中指定的持久性版本(v2.0无法处理它,但v1.0可以)。

改变这个: http://java.sun.com/xml/ns/persistence/persistence_***2_0***.xsd“>

要: http://java.sun.com/xml/ns/persistence/persistence_***1_0***.xsd“>