2016-09-21 2 views
2

Ich habe ein zugeordnetes Oberklasse, die alle Unternehmen zu erwarten sind zu erweitern:Java - JPA anhängen immer abfragen

@MappedSuperclass 
public abstract class AbstractPersistedEntity { 

    /** The id. */ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private Long id; 

    /** The delete. */ 
    @Column(name = "DELETE_IND", nullable = false) 
    private Boolean delete; 

    /** The uuid. */ 
    @Column(name = "UUID", nullable = false) 
    private String uuid; 

    /** The created time stamp. */ 
    @Column(name = "CREATED_TS", nullable = false) 
    private Long createdTs; 

    /** The modified time stamp. */ 
    @Column(name = "MODIFIED_TS", nullable = false) 
    private Long modifiedTs; 

/* methods omitted for brevity */ 
} 

Es gibt Indikator löschen (löschen), der auf true gesetzt ist, wenn es in Ordnung ist, die anhielt löschen Entität - andernfalls wird die Entität gerade zum Löschen markiert.

Woran ich mich nicht sicher bin, ist, wie man den benötigten Wert von delete immer an jede Abfrage anhängt, ohne dies für jede Abfrage tun zu müssen. Ich bin mir eigentlich nicht sicher, ob das überhaupt möglich ist. Die Suchvorgänge, die ich ausgeführt habe, deuten darauf hin, dass jede Abfrage tatsächlich nach dem Löschwert sucht.

Kann mir jemand wenigstens alternative Möglichkeiten geben, nach der Antwort zu suchen (glücklich, sich selbst zu bedienen) -oder- eine Möglichkeit anzubieten, einen Parameter an jede Anfrage anzuhängen.

Antwort

0

Sie können @Where Anmerkung nutzen:

Where-Klausel auf das Element Entity oder Zieleinheit einer Sammlung hinzuzufügen. Die Klausel ist in SQL geschrieben. Ein häufiger Anwendungsfall ist hier für Soft-Deletes.

So in Ihrem Beispiel würde es wie folgt aussehen:

@MappedSuperclass 
@Where(clause = "DELETE_IND = 0") 
public abstract class AbstractPersistedEntity { 
    ... 
} 
+0

Dank! Sieht so aus, als ob es für mich funktioniert. Antwortmarkierung nach. – willmorejg

Verwandte Themen