我正在尝试使用主列以外的列在两个表之间建立一对多关系。我想要 Asset.assetnum 和 SoftLink.assetnum 之间的联接。我正在使用 hibernate 4,它总是在primary 之间生成关系。
从 ASSET this_ 左外连接 this_.ASSETID=soft3_.ASSETNUM
上的 SOFTLINKS soft3_我真正想要的
从 ASSET this_ 左外连接 this_.ASSETNUM=soft3_.ASSETNUM
上的 SOFTLINKS soft3_如果我遗漏了什么,请提出建议。
@Entity
@Table(name="ASSET")
public class Asset {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ASSETID", nullable = false)
private int assetid;
@Column(name="ASSETNUM", nullable = true)
private String assetnum;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "asset")
private List<SoftLinks> softlinks = new ArrayList<SoftLinks>();
}
@Entity
@Table(name="SOFTLINK")
public class SoftLinks {
@Id
@Column(name="SOFTLINKID", nullable = false)
private String softlinkid;
@Column(name="ASSETNUM", nullable = true)
private String assetnum;
@ManyToOne
@JoinColumn(name = "ASSETNUM", insertable = false, updatable = false)
private Asset asset;
}
最佳答案
在 SoftLinks
类中,您需要将 @ManyToOne
关联更改为:
@ManyToOne
@JoinColumn(name = "ASSETNUM", referencedColumnName = "ASSETNUM", insertable = false, updatable = false)
private Asset asset;
关于java - 除主以外的 Hibernate OneToMany 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148387/