【问题标题】:Hibernate HQL: Many to manyHibernate HQL:多对多
【发布时间】:2016-09-23 14:08:01
【问题描述】:

我有 2 个表,由 2 个 bean:ProcessType 和 Typology 表示。

在 DB 上有第三个表,代表这两个表之间的多对多关系,该表没有 bean,称为 process_type_typology

该表有 2 列:typology 和 process_type

在 ProcessType 上,我有以下代表关系的属性:

          @ManyToMany(fetch = FetchType.LAZY)
          @JoinTable(name = "process_types_typology" ,
             joinColumns = {@JoinColumn(name = "process_type")} ,
             inverseJoinColumns = {@JoinColumn(name = "typology")})
          private Set<Typology> typologies = new HashSet<Typology>(0);            

然后是类型学:

          @ManyToMany(fetch = FetchType.LAZY)
          @JoinTable(name = "process_types_typology" ,
             joinColumns = {@JoinColumn(name = "typology")} ,
             inverseJoinColumns = {@JoinColumn(name = "process_type")})
          private Set<ProcessType> processTypes = new HashSet<ProcessType>(0);

如何在这 2 个表之间建立连接?第三个表没有映射,所以我不知道。

在 SQL 上,查询是这样的:

 from processType inner join process_types_typology ptt on pt.id_process_type=ptt_.process_type 

【问题讨论】:

    标签: hibernate many-to-many hql


    【解决方案1】:

    只需加入ProcessTypeTypology,Hibernate 会注意在生成的 SQL 中提及关系表:

    from ProcessType pt join pt.typologies t
    

    另外,由于关联是双向的,请确保将一侧声明为inverse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 2014-08-20
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      相关资源
      最近更新 更多