2014-09-23 81 views
4

对于从日食链接迁移到休眠状态,我正在寻找月食链接注释@AdditionalCriteria在休眠相当于在@MappedSupperClassBaseEntity水平,过滤来自扩展这个BaseEntity所有实体逻辑删除记录。休眠@Where不是在@MappedSuperclass实体执行

我发现了@Where注释。但是,这仅适用于Entity级别,而不适用于BaseEntity。请让我知道是否有可能添加此或任何其他Hibernate注释来过滤BaseEntity

@MappedSuperclass 
@Where(clause = "DEL_IND = 0") // DOES NOT WORK 
public abstract class BaseEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Column(name = "DEL_IND") 
    private boolean deleted = Boolean.FALSE; 

    public boolean getDeleted() { 
     return deleted; 
    } 

    public void setDeleted() { 
     this.deleted = Boolean.TRUE; 
    } 

} 


@Entity 
@Table(name = "PERSON") 
@Where(clause = "DEL_IND = 0") // THIS WORKS BUT NEEDS TO BE REPEATED IN ALL ENTITIES 
public class Person extends BaseEntity implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue 
    @Column(name = "PERSON_ID") 
    private Integer id; 

    @Column(name = "LAST_NAME") 
    private String lastName; 

    @Column(name = "FIRST_NAME") 
    private String firstName; 

    -------------------- 
    getters & setters 
    -------------------- 
    -------------------- 
} 

回答

0

您可以为此打开一个Hibernate JIRA问题。唯一的解决方法是手动将@Where注释添加到所有实体或使用过滤器。

使用过滤器,您可以选择动态启用/禁用它们,这很有用,因为您有时可能想要获取已删除的项目。