ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
1316
1316
EMPFEHLEN
-
Hallo zusammen,
ich könnte das Ganze mit einem DAO umgehen, aber ich verstehe noch nicht ganz, warum das nicht funktioniert. Also, folgende Problemstellung.
Es gibt eine Entität RiskAssessment, die kann beliebig viele Risiken (Entität Risk) beinhalten. Ein Risko kann als gelöscht markiert werden (deleted = true). Im Standardfall möchte ich diese Risiken nicht mit anzeigen. Ist eigentlich nichts esoterisches
Listing 1 - Herstellen der Beziehung
Code java:1 2 3 4 5 6 7 8 9 10
@OneToMany(cascade = {CascadeType.ALL} ) @JoinTable( name="DiscoveredRisks", joinColumns = @JoinColumn(name = "assessment_id"), inverseJoinColumns = @JoinColumn(name = "risk_id") ) @Filter(name="deleted", condition="deleted = false") public List<Risk> getRisks() { return risks; }
Listing 2 - Filterdefinition der Zielentität
Code java:1 2 3 4 5 6 7 8
@Entity @FilterDef(name="deleteFlag", parameters=@ParamDef(name="deleteFlag", type="boolean"), defaultCondition="false") @Filters ({ @Filter(name = "deleted", condition = "deleted = :deleteFlag") }) @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class Risk { // ....
Das ganze habe ich mehr oder minder aus der Hibernatedokumentation entnommen.
Was mir dabei wohl auffällt, ist dass man dort einen Parameter definiert - das ":deleteFlag" - den aber nirgendwo mit Leben füllt. Ich hatte gehofft/vermutet, dass es über die Deklaration des Filters in Listing 2 klappen würde. Dem ist aber nicht so.
Weiter hatte ich im Internet gefunden, dass über die Hibernate-Session ein Filter enabled werden kann (muss?). Ist das vielleicht beim Problem?
Habt ihr eine Idee ...
Edit: Fast vergessen
wenn ich .getRisks() aufrufe sehe ich im Log, dass der join korrekt generiert wird. Dabei wird aber in der Where Clause der Filter nicht eingebaut. Sprich es erscheint kein "AND deleted = false" o.ä. im SQL Query.
Könnte auch sein, dass ich das Filter-Konzept falsch verstanden habe, will ich ja nicht ausschließen
Geändert von Sentoo (21.08.09 um 13:41 Uhr)
-
Hatte es mir fast gedacht. Ich hatte das Konzept falsch verstanden - meiner Meinung nach. An der Stelle wo ich den Filter einbauen wollte, ist es nicht richtig. Dort deklariert man die Beziehung zwischen den beiden Klassen. Constraints haben dort wohl nichts verloren.
Habe für das was ich will ein DAO gemacht und einen entsprechenden named Query.
Ähnliche Themen
-
Hibernate-Annotations-Problem
Von 7bkahnt im Forum JavaAntworten: 2Letzter Beitrag: 23.04.10, 13:43 -
[Hibernate] Problem mit Annotations
Von AndreBrueck im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 28.06.09, 22:01 -
Hibernate OneToMany
Von igfas im Forum JavaAntworten: 3Letzter Beitrag: 09.02.09, 11:59 -
Hibernate Annotations
Von drezze im Forum JavaAntworten: 0Letzter Beitrag: 28.11.08, 08:36 -
Hibernat Annotations: Probleme mit @OneToMany
Von Ciscolos im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 14.04.08, 19:23





Zitieren
Login





