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

InformationsquelleAutor Johny19 | 2014-11-27
Schreibe einen Kommentar