使用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必须使用主键?我的意思是,我不是只是定义这是一个多对一的关联吗? 为什么它必须是主键?
指定:这就是表格的样子。
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
答案 0 :(得分:0)
如果您阅读JPA Documentation on @JoinTable,则会看到joinColumns和inverseJoinColumns提及的说明:
引用主要表的连接表的外键列 实体表......
我想这足以理解约束。