Java 在hibernate中查找一个具有两个条件的记录,而不是一个
有三个表A、B和C,如下所示:Java 在hibernate中查找一个具有两个条件的记录,而不是一个,java,hibernate,Java,Hibernate,有三个表A、B和C,如下所示: A: id ip B: id cid sip dip C: id 在A.java中,我想设置A的ip小于B的dip,大于B的sip,B的id与C的id连接,如下所示: @JoinTable(name="A", joinColumns={@JoinColumn(name ="sip", referencedColumnName = "ip"),@JoinColumn(name ="dip", referencedColumnName = "ip")}
A: id ip
B: id cid sip dip
C: id
在A.java
中,我想设置A的ip小于B的dip,大于B的sip,B的id与C的id连接,如下所示:
@JoinTable(name="A", joinColumns={@JoinColumn(name ="sip", referencedColumnName = "ip"),@JoinColumn(name ="dip", referencedColumnName = "ip")},
inverseJoinColumns={@JoinColumn(name ="cid")})
@WhereJoinTable(clause="ip::inet between sip::inet and dip::inet")
但它不起作用。以前有人碰到过这个问题吗 您正在寻找
JoinColumsOrFormulas
。我不确定您的表结构是什么,也不确定您到底想加入什么,但下面是一个联接的工作示例,它联接(primaryKey)@JoinColumn
-sku和与@JoinFormula
中的查询匹配的id
@OneToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula(formula = @JoinFormula(value = "(select a.id from uk_products a where a.asin != '' and a.product_name != '' and a.seller_sku = sku)", referencedColumnName = "id")),
@JoinColumnOrFormula(column = @JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false))
})
@JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false)
您正在查找
JoinColumsOrFormulas
。我不确定您的表结构是什么,也不确定您到底想加入什么,但下面是一个联接的工作示例,它联接(primaryKey)@JoinColumn
-sku和与@JoinFormula
中的查询匹配的id
@OneToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula(formula = @JoinFormula(value = "(select a.id from uk_products a where a.asin != '' and a.product_name != '' and a.seller_sku = sku)", referencedColumnName = "id")),
@JoinColumnOrFormula(column = @JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false))
})
@JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false)