@JoinColumn 匹配关联多个字段

两张表结构如下
TABLE_A:
ID, COLA1, COLA2
 
TABLE_B:
ID, A_ID, COLB1, COLB2
 
A和B是一对多的关系。
我在B的BEAN上面,通过Anotation建立如下关系。
@ManyToOne(cascade = CascadeType.REFRESH, targetEntity = TABLE_A.class)
@JoinColumnsOrFormulas(value={@JoinColumnOrFormula(column=@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable = true, insertable = false, updatable = false))
                 ,@JoinColumnOrFormula(formula=@JoinFormula(value="'ABC'", referencedColumnName = "COLB1"))
                        })
 
 
现在的问题来了,就是在 TABLE_B.A_ID = TABLE_A.ID同时,还要求TABLE_B.COLB1="ABC"。

 

解决办法如下:

@ManyToOne(cascade = CascadeType.REFRESH, targetEntity = TABLE_A.class)

@JoinColumnsOrFormulas(value={

@JoinColumnOrFormula(column=@JoinColumn(name ="A_ID", referencedColumnName ="ID", nullable = true, insertable =false, updatable = false)) ,@JoinColumnOrFormula(formula=@JoinFormula(value="'ABC'", referencedColumnName = "COLB1"))  

})



 

重点就是@JoinFormula的使用(和@JoinColumn类似):

value指明对应列的值(这里也可以写SQL表达式),

referencedColumnName指明列的名称

由于关联关系多于一个,所以,需要使用@JoinColumnsOrFormulas、@JoinColumns、@JoinrFormulas这样的标签,将多个条件包括进来。

 

参考:http://www.oschina.net/question/54953_45536

 

你可能感兴趣的:(@JoinColumn 匹配关联多个字段)