gpt4 book ai didi

hibernate - hibernate -类级别@Where对该类的集合不强制执行注解?

转载 作者:行者123 更新时间:2023-12-02 04:05:26 25 4
gpt4 key购买 nike

我在类级别用@Where属性注释了一个Hibernate实体。
这限制了我直接查询实体时要加载的实体,但似乎不适用于该类的集合。这是可以预期的吗?

文档尚不清楚:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-class

其中(可选):指定要使用的任意SQL WHERE条件
在检索此类的对象时使用。

在我看来,这听起来像适用于检索该类对象的所有情况,但是我发现对于集合来说,这被忽略了。

  • 这是要用于收藏吗?
  • 如果不是,将过滤器全局应用于类的所有实例以及该类的所有集合的最佳方法是什么?

  • (更新:我提出了 https://hibernate.atlassian.net/browse/HHH-6781来跟踪文档问题。)

    最佳答案

    使用“getAll”或“loadAll”时,@ Where在类级别将省略不需要的实例。在类级别具有@Where不会“级联”应用于该实体上的集合。

    @在集合属性级别
    public 类PuppySeller {

        @Where(clause = "status='FOR_SALE'")
    public Set<Puppy> getPuppiesForSale() {}

    将确保您从数据库中选择“PuppySeller”时,“puppiesForSale”将仅由状态为“FOR_SALE”的幼犬填充。

    但是,请务必谨慎,因为它仅适用于第一级收藏。我的意思是说您有一只小狗,并且您想让同一位卖家出售所有小狗。您可能会执行类似“myPuppy.getPuppySeller()。getPuppiesForSale()”的操作。但是,如果这样做,最终将导致所有不分状态的,属于uppySeller的幼犬,包括所有“已出售”或“NEWBORN”的幼犬,等等。

    关于hibernate - hibernate -类级别@Where对该类的集合不强制执行注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892665/

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