Sentoo
Erfahrenes Mitglied
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
Listing 2 - Filterdefinition der Zielentität
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
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
Java:
@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
Java:
@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

Könnte auch sein, dass ich das Filter-Konzept falsch verstanden habe, will ich ja nicht ausschließen

Zuletzt bearbeitet: