JPA忽略逐列值映射

Posted

技术标签:

【中文标题】JPA忽略逐列值映射【英文标题】:JPA ignore mapping row by column value 【发布时间】:2015-10-02 09:19:25 【问题描述】:

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

@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;
  ...

提前致谢!

【问题讨论】:

【参考方案1】:

是的,您可以为此目的使用@AdditionalCriteria

@AdditionalCriteria("this.deleted = false")

【讨论】:

以上是关于JPA忽略逐列值映射的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot JPA @JoinTable 与现有映射表忽略 @GeneratedValue

spring data JPA忽略查询方法上的fetchmode

jpa 实体bean中如何定义非映射字段

Laravel Eloquent 查询忽略列值

使用连接忽略选择中的表列值

eclipse忽略JPA错误提示