Hibernate @Where Anmerkung auf einer ManyToOne-relation
Habe ich vor kurzem begonnen zu überarbeiten meinem Projekt, da musste ich eine extra Spalte meiner Tabelle. Die zusätzliche Spalte ist ein Enum (Ausstehend oder Aktiv).
Denn diese änderung würde ich jetzt brauchen, umgestalten, ALLE meine Fragen zu ruft nur eine Zeile, wenn der status AKTIV ist.
Nach einigen Recherchen fand ich, dass wir beschriften können ein Unternehmen mit der @Where Anmerkung. es funktioniert gut, wo ich es auf eine einfache Spalte, aber meine Tabelle so Aussehen:
@Where(clause = 'state='ACTIVE'")
@Entity
public class Place {
@Column(name="id_place")
private String placeId;
@Column(name="name")
private String palceName;
@OneToMany(mappedBy = "place")
private Set<PlaceTag> placeTag;
...
...
}
@Where(clause = 'state='ACTIVE'")
@Entity
public class Tag {
@Column(name="id_tag")
private String tagId;
@Column(name="name")
private String tagName;
@OneToMany(mappedBy = "tag")
private Set<PlaceTag> placeTag;
...
...
}
@Where(clause = 'poi.state='ACTIVE' AND tag.state='ACTIVE")
@Entity
public class PlaceTag {
@Column(name="id")
private String id;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
@JoinColumn(name = "place_id")
private Place place;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
@JoinColumn(name = "tag_id")
private Tag tag;
...
...
}
Nun meine Frage wäre, wie kann diese Aussage NUR zurückgeben Orten und tags, die AKTIV sind ?
SELECT pt FROM PlaceTag pt;
Ist das möglich? Oder muss ich auf die schreiben der Abfrage Explizit ?
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie schon entdeckt, oder einfach mit den Fällen, die
@Where
- Klausel ist nur in Ordnung, aber in Ihrem Fall, Sie filtern möchtenPlaceTag
durch den Ort und tag zu, so trat die erforderlich ist in dieser situation.So, Sie halten können
@Where
Klausel fürPlace
undTag
, während fürPlaceTags
Sie brauchen, um eine JPQL-Abfrage:Zumindest bis
@WhereJoinTable
annotation wird auf die Arbeit für viele-zu-eins-Assoziationen zu.