Java 在hibernate中查找一个具有两个条件的记录,而不是一个

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、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")},
    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)