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/