java Hibernate在超类中定义@Where注解

zu0ti5jz  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(134)

我正在尝试在我的Spring - Hibernate项目中实现软删除,我的计划是用X1 M0 N1 X注解覆盖delete方法,并在查询中用Hibernate X1 M1 N1 X注解过滤逻辑删除的实体。
当我尝试在超类中定义@Where子句时,我遇到了一些困难,似乎实体没有从抽象基类继承@Where子句。

**注意:**如果我将@Where注解移动到实体类,则一切都按预期工作
基本实体类:

@MappedSuperclass
@Where(clause = " IS_DELETED = false")
public abstract class BaseEntity {

   @Column(name = "IS_DELETED")
   private boolean isDeleted;

   public BaseEntity() {
   }

   public boolean getIsDeleted() {
      return this.isDeleted;
   }

   public void setIsDeleted(boolean isDeleted) {
      this.isDeleted = isDeleted;
   }
 }

实体类:

@Entity
@Table(name = "Events")
@SQLDelete(sql ="UPDATE events " +
                "SET IS_DELETED = true " +
                "WHERE id = ?")
public class Event extends BaseEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "ID")
   private Long id;

   @Column(name = "NAME")
   private String name;

   public Event() {
   }

   public Long getId() {
      return id;
   }

   public void setId(Long id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

谢谢你的任何帮助:)

toe95027

toe950271#

你试过这个吗?

@Where(clause = "IS_DELETED = 0")

@Where(clause = "isDeleted = 0")

相关问题