带有附加条件的Honenate oneToOne联接 [英] Hibernate oneToOne join with additional criteria

查看:109
本文介绍了带有附加条件的Honenate oneToOne联接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在休眠状态下进行联接,但是我想排除一些结果.我已经尝试过使用@JoinColumnsOrFormulas,但仍然可以获得所有结果

I need to do a join in hibernate, but I want to exclude some results from being found. I've tried using @JoinColumnsOrFormulas, but I still get all results

@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;
}

在应用程序启动时,我收到NullPointerException

I get an NullPointerException on application startup, at

org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory

org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory

如何与带有其他条件/排除条件的spring-boot(1.4)休眠(5.2.2.Final)联接?

How do I do a join with spring-boot (1.4) hibernate (5.2.2.Final) with additional criterias/exclusions?

推荐答案

我认为我找到了一个可行的解决方案.当在公式和@JoinColumn批注中引用同一列时,Hibernate似乎忽略了@JoinForumula.当引用公式中的另一列时-例如id,它可以正常工作.

I think I found a solution that works. Hibernate seems to ignore the @JoinForumula when referencing the same column in the formula and in the @JoinColumn annotation. When referencing another column in the formula - e.g. id, it works.

@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;
}

这篇关于带有附加条件的Honenate oneToOne联接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆