hibernate onetoone使用附加条件连接

pcww981p  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(364)

我需要在hibernate中执行一个join,但是我想排除一些结果。我试过用 @JoinColumnsOrFormulas ,但我还是得到了所有的结果

@OneToOne
@JoinColumnsOrFormulas({
        @JoinColumnOrFormula(formula = @JoinFormula(value= "(select a.seller_sku from de_products a where a.asin = 'a' and a.product_name != '' and a.seller_sku != '' and a.seller_sku = sku)", referencedColumnName = "seller_sku")),
        @JoinColumnOrFormula(column = @JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false))
})
public DeProducts getDeProduct() {
    return deProduct;
}

如果我不穿衣服就试试看 column 定义

@OneToOne
@JoinColumnsOrFormulas({
        @JoinColumnOrFormula(formula = @JoinFormula(value= "(select a.seller_sku from de_products a where a.asin = 'a' and a.product_name != '' and a.seller_sku != '' and a.seller_sku = sku)", referencedColumnName = "seller_sku"))
})
public DeProducts getDeProduct() {
    return deProduct;
}

在应用程序启动时,在
org.springframework.orm.jpa.vendor.springhibernatejbapersistenceprovider.createContainerEntityManager工厂
如何使用springboot(1.4)hibernate(5.2.2.final)和其他标准/排除项进行连接?

idfiyjo8

idfiyjo81#

我想我找到了一个有效的解决办法。当在公式和@joincolumn注解中引用同一列时,hibernate似乎忽略了@joinforumula。当引用公式中的另一列时-例如。 id ,它起作用了。

@OneToOne
@JoinColumnsOrFormulas({
        @JoinColumnOrFormula(formula = @JoinFormula(value = "(select a.id from de_products a where a.asin != '' and a.product_name = 'a' and a.seller_sku = sku)", 
              referencedColumnName = "id")),
        @JoinColumnOrFormula(column = @JoinColumn(name = "sku", referencedColumnName = "seller_sku", insertable = false, updatable = false))
})
public DeProducts getDeProduct() {
    return deProduct;
}

相关问题