我有这个在数据库中构建树的对象。每个节点都指向其父节点,或者为空。我需要这种关系是双向的,所以每个节点也知道它的子节点。当一个节点被删除时,IS_ACTIVE 被设置为 false。如何修改这些注释,以便仅加载 IS_ACTIVE 设置为 true 的子级?
@Entity
@Table(name = "node")
public class Node {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_NODE_ID")
private Node parentNode;
@OneToMany(mappedBy = "parentNode", fetch = FetchType.LAZY)
private Set<Node> childrenNodes;
@Column(name = "IS_ACTIVE", nullable = false)
private boolean isActive;
//other fields that shouldn't matter left out.
}
目前我的单元测试在同一个事务中运行,所以我必须使用 session.refresh(node) 来加载子节点,但每次加载所有子节点时都会忽略我的过滤器和 where 子句。
注释此类的正确方法是什么,以便孩子只加载活跃的孩子?
孩子们是否延迟加载有关系吗?
*请注意,我正在寻找答案。
例如,这个问题似乎是相关的,但解决方案不起作用。我相信它是不同的,因为我的加入是自我引用的......但这可能是由于我缺少其他东西。用于过滤 @OneToMany 关联结果的注释