4 Stimmen

Abbildung von @OneToOne mit @Where-Klausel

Ich versuche, eine Entität wie folgt zuzuordnen

@OneToOne(mappedBy = "localizedLabel")
@JoinColumn(insertable = false, updatable = false)
@WhereJoinTable(clause = "locale='en_US'")
public Localization getEn_US() {
    return en_US;
}

Ich kann versichern, dass die Daten nur eine oder null zurückgeben, wenn sie nicht gefunden werden, aber Hibernate scheint meine @Where-Klausel zu ignorieren:

ERROR com.eventtouch.bc.business.core.log.LoggingInterceptor - org.hibernate.HibernateException: More than one row with the given identifier was found: 4211, for class: com.eventtouch.bc.business.domain.LocalizedLabel

Irgendwelche Ideen, wie man eine @OneToOne-Beziehung mit einer @Where-Klausel abbilden kann?

Gracias

0voto

Thierry Punkte 5010

Ihr @OneToOne scheint keine Join-Tabelle zu verwenden.

Sollten Sie in diesem Fall nicht eher eine @Where-Annotation als die @WhereJoinTable verwenden, die Zeilen einer Join-Tabelle filtert?

0voto

sql_dummy Punkte 694

Wenn Sie @JoinColumn Referenzspalte in der Quelltabelle erstellt wird (da es sich um eine Eins-zu-eins-Assoziation handelt), wird die Erstellung einer Join-Tabelle vermieden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X