JPA 忽略按列值映射行

JPA ignore mapping row by column value

我正在制作一个基于JPA/Eclipselink和实体的应用程序,删除操作必须是合乎逻辑的(属性/列为真或假)以在数据库中保留日志。我想知道是否可以忽略关系 OneToMany 或 ManyToMany 中 "deleted" 为 "true" 的数据库行。我有类似于以下的实体:

@Entity
public class Employee {
  @Id
  @Column(name="EMP_ID")
  private long id;
  ...
  @OneToMany(mappedBy="owner")
  private List<Phone> phones;
  ...
}

@Entity
public class Phone {
  @Id
  private long id;

  @NotNull
  @Column(name = "deleted")
  private boolean deleted = false;
  ...
  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="OWNER_ID")
  private Employee owner;
  ...
}

提前致谢!

是的,您可以使用 @AdditionalCriteria 来达到这个目的:

@AdditionalCriteria("this.deleted = false")