2016-10-06 2 views
2

Ich muss eine Verbindung im Ruhezustand machen, aber ich möchte einige Ergebnisse aus der Suche ausgeschlossen werden. Ich habe versucht, @JoinColumnsOrFormulas, aber ich bekomme immer noch alleHibernate oneToOne mit zusätzlichen Kriterien beitreten

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

Wenn ich es versuchen, ohne die column Definition

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

ich eine Nullpointer beim Anwendungsstart erhalten, bei

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

Wie mache ich eine Verbindung mit Spring-Boot (1.4) Hibernate (5.2.2.Final) mit zusätzlichen Kriterien/Ausschlüsse?

Antwort

0

Ich denke, ich habe eine Lösung gefunden, die funktioniert. Hibernate scheint das @JoinForumula zu ignorieren, wenn auf dieselbe Spalte in der Formel und in der Annotation @JoinColumn verwiesen wird. Wenn eine andere Spalte in der Formel referenziert wird - z. id, es funktioniert.

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