我在试图找到解决方案时遇到了一些麻烦,我认为这可能根本不可能,但我仍然会在这里尝试一下。因此,假设我在 MySQL 上使用 MyISAM(无 FK)的旧数据库模式具有以下 2 个表:
TblOrder
ORDERID (INT) PK
CUSTOMERID (INT) PK
REPID (INT) PK
ISORDER (INT) PK
other columns...
TblOrderPos
ORDERID (INT) PK
POSITIONID (INT) PK
other columns
我的注释应该是什么样子才能允许 TblOrder 拥有一组 TblOrderPos(由 ORDERID 标识)和 TblOrderPos 一个私有 TblOrder 实例?我确实为这两个表创建了 EmbeddedId 对象,并且每次我尝试使用 @ManyToOne 或 @OneToMany 创建一个覆盖 @JoinColumns 的属性时,Hibernate 抱怨 PK 列的数量不匹配(它不能)。
我真的希望有人有一个想法,或者是否有可能。
- - - - - -更新 - - - - - -
在 TblOrder 上
@OneToMany(mappedBy="shoporder")
@JoinColumn(name="ORDERID")
public List<Orderposition> getOrderpositions(){
return this.positions;
}
public void setOrderPositions(List<Orderposition> positions){
this.positions = positions;
}
在 TblOrderPos 上
@ManyToOne
@JoinColumn(name="ORDERID")
public Shoporder getShoporder(){
return this.shoporder;
}
public void setShoporder(Shoporder order){
this.shoporder = order;
}
这就是我不断收到的错误:从 TblOrderPos 引用 TblOrder 的外键具有错误的列数。应该是 4