gpt4 book ai didi

java - Hibernate:父实体上的过滤器是否隐式过滤子实体?

转载 作者:行者123 更新时间:2023-11-30 09:52:16 26 4
gpt4 key购买 nike

假设有两个实体 EntityA 和 EntityB。为两个实体定义了两个表。EntityB 是 EntityA 的子实体。现在在使用 hibernate 注释的 java pojos 中,我定义了两个对应于表 EntityA 和 EntityB 的类,如下所示。

    @FilterDef(name = "myfilter", parameters = { @ParamDef(name = "year", type = "int") }, defaultCondition = ":year = year")

public class EntityA

{

@OneToMany(mappedBy="EntityA")
List<EntityB> getEntityBList()
{
}

}


public class EntityB
{

@ManyToOne
@joincolumn(name="entityA_id")
EntityA getEntityA()
{
}

}

因为我在 EntityA 上有过滤器。是否暗示 EntityB 将仅加载与 EntityA 的过滤对象相对应的对象,同时牢记父子关系,或者是否需要明确地在 EntityB 上放置过滤器?

示例,如果 EntityA 被过滤以便仅加载对应于 2010 年的对象。我希望 EntityB 的加载对象应该只是对应于 2010 年的 EntityA 对象的子对象。

最佳答案

如果从不直接查询 EntityB,而是始终通过 entityA.getEntityBList() 加载,您的过滤器将起作用。但是,如果您直接查询 EntityB,则不会过滤结果。将过滤器视为包含在 Hibernate 加载 EntityA 的所有 SQL 的 WHERE 部分中的限制子句。

关于java - Hibernate:父实体上的过滤器是否隐式过滤子实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com