找到一个记录有两个条件而不是一个在休眠状态

时间:2016-07-12 11:29:58

标签: java hibernate

有三个表A,B和C,如下:

A: id ip  
B: id cid sip dip   
C: id  

A.java中,我希望设置< C>,其中A的ip小于B的下降并且大于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")

但它没有用。有没有人碰巧遇到过这个问题呢?

1 个答案:

答案 0 :(得分:0)

您正在寻找JoinColumsOrFormulas。我不确定你的表结构是什么,以及你想要加入的是什么,但下面是一个连接(primaryKey)@JoinColumn - sku和匹配的id的连接的工作示例@JoinFormula

中的查询
    @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)