如何在Hibernate中表示以下SQL?
SELECT * FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.COLUMN1 = TABLE2.COLUMN1 OR TABLE1.COLUMN1 = TABLE2.COLUMN2 OR TABLE1.COLUMN1 = TABLE2.COLUMN3
TABLE1的值可以存在于TABLE2的COLUMN1,COLUMN2或COLUMN3中。我之所以需要这种关系是因为我将TABLE2作为对象嵌入了TABLE1&#39的类中。
如,
@ManyToOne
@JoinColumns({
@JoinColumn(name="COLUMN1", referencedColumnName="COLUMN1"),
@JoinColumn(name="COLUMN1", referencedColumnName="COLUMN2")
})
private TABLE2 object;
上述代码不起作用并引发以下错误:
引起:org.hibernate.MappingException:属性映射列数错误:
答案 0 :(得分:0)
所以我选择的解决方案是通过连接3个不同的列将TABLE2添加为3个单独的对象。我还设置了optional = true以允许左外连接。我对这种方法并不感到高兴,因为看起来应该采用不同的方式。
@ManyToOne(optional = true)
@JoinColumn(name="COLUMN1", referencedColumnName="COLUMN1")
private TABLE2 object1;
@ManyToOne(optional = true)
@JoinColumn(name="COLUMN1", referencedColumnName="COLUMN2")
private TABLE2 object2;
@ManyToOne(optional = true)
@JoinColumn(name="COLUMN1", referencedColumnName="COLUMN3")
private TABLE2 object3;