java - JPA一对多过滤

标签 java jpa one-to-many

我们嵌套了几个实体。然而,在检索时,我们只想获取那些处于 Activity 状态的实体。

@Entity
public class System {
  @Id
  @Column(name = "ID")
  private Integer id;

  @OneToMany(mappedBy = "system")
  private Set<Systemproperty> systempropertys;
}

@Entity
public class Systemproperty {
  @Id
  @Column(name = "ID")
  private Integer id;

  @Id
  @Column(name = "ACTIVE")
  private Integer active;
}

当请求 Systemproperties 时,我只想获取 active 的属性(active = 1)。

四处搜索我发现了一些 hibernate annotations以及使用 subqueries 的可能性.但是,两者都不适合我。尽管我们目前正在使用 hibernate,但我正在考虑将其替换为 Eclipselink,因为我们目前必须使用预先加载,并且我们可能会遇到性能问题。子查询并不能很好地工作,因为我们嵌套了多个级别。

Eclipselink 似乎有一个 @Customizer可以工作的注释,但是它似乎遵循与 hibernate @FilterDef 注释不同的概念,并且在切换时会导致额外的开销。

@JoinColumn 似乎不允许进一步过滤。有没有标准的 JPA 方法来解决这个问题?

最佳答案

@Where 实现的另一种 hibernate 方式:

@Entity
public class System {
  @Id
  @Column(name = "ID")
  private Integer id;

  @OneToMany(mappedBy = "system")
  @Where(clause = "active = true")
  private Set<Systemproperty> systempropertys;
}

@Entity
public class Systemproperty {
  @Id
  @Column(name = "ID")
  private Integer id;

  @Id
  @Column(name = "ACTIVE")
  private Integer active;
}

关于java - JPA一对多过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306235/

相关文章:

java - Hibernate OneToMany 双向关系很慢

java - Appium水平滚动屏幕上的滚动问题

Java调用函数两次时出现越界异常?

java - Spring Boot 中使用 Jpa 动态表名

java - Spring 实体 bean 未知。使用新的 Spring 3.1 packagesToScan 属性并且没有 persistence.xml

javascript - 以 Javascript/jQuery 表示的 PHP 表单 : One to many UI relationships,?

java - 如何在 JPA 中正确关联具有多个键的表

java - 在浏览器中下载 Excel : Not able to prompt out save button

java - OSGi ServiceTracker 中的漂亮 URL

java - 使用 Jackson 处理 @RequestBody 中的 Null 和 Default 值