2016-04-14 5 views
0

Ich verwende Hibernate 3.5.4 Version als Orm Ich habe zwei Tabellen, die viele zu einer Beziehung haben, wie Tabelle 'Buch' kann viele 'Autoren' mit ihm verbunden haben.Holen Sie MantytoOne basierend auf bestimmten Bedingung

@OneToMany(mappedBy = "key.bookId", fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
public Set<BookAuthor> getAuthors() { 
    return authors; 
} 

Aber wir verwenden weiches löschen zum Löschen des Vereins (wir pflegen eine Spalte namens isDeleted), möchte ich an das Unternehmen holen basierend auf isDeleted überprüfen, ob sein 1 nicht geladen werden soll, sonst, wenn 0 Last es.

Ist es möglich, durch Ändern dieser aktuellen Abrufstrategie die oben genannte Unterstützung bereitzustellen oder es gibt eine andere bessere Lösung, die angewendet werden kann, lassen Sie es mich wissen.

Antwort

1

Dieser Artikel soll das Szenario summieren Sie brauchen: https://dzone.com/articles/hibernate-where-clause

+1

Ich wäre sehr vorsichtig mit Wo auf Klassenebene. Soweit ich weiß, können Sie den Where-Clause nicht überschreiben, wenn er auf Klassenebene annotiert ist. Das Deklarieren von Where oder Filter mit dem Getter ist flexibler. – samjaf

+0

Stimme voll und ganz zu. Aber für diesen speziellen Zweck (Soft-Delete), wo Sie es einheitlich anwendungweit handhaben wollen, sollte es in Ordnung sein. – rapasoft

1

Werfen Sie einen Blick auf die @Filter oder @Where Annotation.

Soweit ich weiß, ist dies der übliche Weg, um Sammlung holen zu beschränken.