java - Hibernate 带有约束的急切/惰性加载

标签 java hibernate lazy-loading

ClassA {

 @Id
 @GeneratedValue
 @Column(name = "a_id")
 private long id;

 @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "classA")
 private Set<ClassB> classBs;

}

ClassB {

 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "a_id")
 private ClassA classA;

 @JoinColumn(name = "size")
 private int size;

}

当急切/延迟加载时,如何向 ClassA 的 classB 添加约束?

例如,我只想将大小 > 10 的 ClassB 加载到 ClassA 的 Set classB 中。

我知道我可以使用注释 @OrderBy(value = "size ASC") 对 Set 进行排序,但是我可以添加除 Order 之外的约束吗?

我可以使用 Hibernate 实现它吗?

我可以在 Laravel(一个 PHP 框架)中做到这一点。 http://laravel.com/docs/eloquent#eager-loading 中的急切负载约束.

最佳答案

看看 Hibernate 过滤器:
Documentation
Sample
您应该注意一件事,那就是过滤器不会永久应用于实体,您需要在想要使用它们时启用它们:

session.enableFilter("myFilter");

关于java - Hibernate 带有约束的急切/惰性加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24276782/

相关文章:

java - 模式匹配时排除某个模式位于另一个模式内部时

java - JPA 单向 ManyToMany - 检索列表时的重复位置

Angular 延迟加载模块,单元测试代码覆盖率

javascript - 为什么 Bing Maps 7 AJAX 控件不是延迟加载?

java - Twitter 趋势 API - org.json.JSONException (Android)

java - 将日期时间字符串从一个时区 A 转换为时区 B,其中 jvm 在时区 C 中运行

java - 如何对复杂类型的 Hibernate 搜索结果进行排序

java - 持久化 OneToMany 关系仅保留集合中的第一个对象?

javascript - JavaScript 中延迟加载的最佳实践

java - Kafka Streams 应用程序在 kafka 服务器上打开太多文件