JPA/Hibernate 3.6/DB2 を使用。
次の例外があります: 原因: org.hibernate.AnnotationException: SecondaryTable JoinColumn は非主キーを参照できません
のせいで:
public class XRequest {
@ManyToOne
@JoinTable(
name = "RequestBatch",
joinColumns = @JoinColumn(name = "requestBatchID", referencedColumnName="requestBatchID"),
inverseJoinColumns = @JoinColumn(name = "requestVersionID")
)
private Requestversion requestversion;
}
requestBatchID は主キーではなく、RequestBatch テーブルからインポートされたキーです (実際には主キーです)。JoinTable で主キーを使用する必要があるのはなぜですか? つまり、これが多対 1 の関連付けであると定義しただけではありませんか? なぜ主キーでなければならないのですか?
指定するには: これは、テーブルがどのように見えるかです。
XRequest (
requestId int (primary)
requestBatchId int (imported key from RequestBatch)
)
RequestBatch (
requestBatchId int (primary)
requestVersionId int
)
RequestVersion (
requestVersionId int (primary)
)
必要な結果は、Hibernate によって構築される次の SQL クエリです。
select xr, rv
from XRequest xr
left outer join RequestBatch rb on rb.requestBatchId = xr.requestBatchId
inner join RequestVersion rv on rb.requestVersionId = rv.requestVersionId