【发布时间】:2011-10-28 04:18:44
【问题描述】:
所以我从我的数据库中反向工程了一些表,当我尝试将我的对象保存到数据库时,我收到以下错误:
初始 SessionFactory 创建 failed.org.hibernate.AnnotationException:从 com.mycode.Account 引用 com.mycode.Block 的外键具有错误的列数。应该是 2 线程“主”java.lang.ExceptionInInitializerError 中的异常
域对象是包含许多帐户对象的块:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "Block")
public Set<EAccount> getAccounts() {
return this.Accounts;
}
Account 有一个 Id 和 Role 的组合键。这已在单独的类中设置:
@Embeddable
public class BlockAccountId implements java.io.Serializable {
private long blockOid;
private String accountRole;
public BlockAccountId() {
}
public BlockAccountId(long blockOid, String accountRole) {
this.blockOid = blockOid;
this.accountRole = accountRole;
}
@Column(name = "BLOCK_OID", nullable = false)
public long getBlockOid() {
return this.blockOid;
}
public void setBlockOid(long blockOid) {
this.blockOid = blockOid;
}
@Column(name = "ACCOUNT_ROLE", nullable = false, length = 10)
public String getAccountRole() {
return this.accountRole;
}
public void setAccountRole(String accountRole) {
this.accountRole = accountRole;
}
所以我想知道。如何在 blockOid 上链接表 Block 和 account 但仍确保 account 表同时具有 blockOid 和 accountRole 作为复合键。
任何示例将不胜感激!
注意,这是块(一)到帐户(多)的关系。
谢谢
【问题讨论】:
标签: java hibernate persistence