【问题标题】:hibernate auto join conditions休眠自动加入条件
【发布时间】:2009-06-01 10:14:04
【问题描述】:

Hibernate 持久化类: @实体 公共类 A {

    @OneToMany(mappedBy = "a")
    private Set<B> bSet = new HashSet<B>();

    @Basic
    private boolean DELETED;

}

B 类也有一个 DELETED 属性。我们如何在连接期间自动处理 DELETED 属性,仅选择未删除的实体。 可能需要一些注释的帮助。有可能吗?

【问题讨论】:

    标签: java hibernate join persistence


    【解决方案1】:

    根据Hibernate documentation,您应该使用 ResultTransformer (ALIAS_TO_ENTITY_MAP)。

    【讨论】:

      【解决方案2】:

      非常感谢! 这是我的决心:

      @Entity
      public class A extends DeletableEntity{
      
          @OneToMany(mappedBy = "a")
          @Where(clause = "DELETED=0 or DELETED is null")
          private Set<B> bSet = new HashSet<B>();
      
          public Set<B> getBSet() {
              return bSet;
          }
      
          public void setBSet(Set<B> bSet) {
              this.bSet = bSet;
          }
      }
      

      和 HQL "select a.DELETED from A a join a.bSet bSet" 将生成原生 SQL,如下所示:

      选择 a0_.DELETED as col_0_0_ from A a0_ inner join B bset1_ on a0_.id=bset1_.a_id 和(bset1_.DELETED=0 或 bset1_.DELETED 为空)

      并且 entityManager.find(...) 将正常工作:)

      【讨论】:

        猜你喜欢
        • 2014-09-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 2013-11-03
        • 2016-03-15
        • 1970-01-01
        相关资源
        最近更新 更多