2016-09-21 59 views
2

我有一个映射的超所有实体有望延续:爪哇 - JPA一直追加到查询

@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 */ 
} 

有删除指示(删除)设置为true,当它是好的,要删除的坚持实体 - 否则,实体只标记为删除。

我不确定的是如何总是将所需的删除值附加到每个查询,而无需为每个查询都这样做。我其实不确定这是否可能。我执行的搜索指向实际定义每个查询以查找删除的值。

是否有人能够为我提供搜索答案的其他方式(很乐意自助服务) - 或者 - 提供一种将参数附加到每个查询的可能方法。

回答

0

您可以利用@Where注释:

Where子句中添加元素实体或 收集的目标实体。该子句是用SQL编写的。这里的常见用例是软件删除的 。

所以在你的榜样它看起来像:

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

谢谢!看起来它在为我工作。根据标记答案。 – willmorejg