【问题标题】:Hibernate criteria java annotationHibernate 标准 java 注释
【发布时间】:2014-11-20 14:24:50
【问题描述】:

我是 Hibernate 的新手,我有一个无法解决的问题,我看看类似的问题,但我没有运气......

我有一张桌子(我们称之为 T1)和另一张桌子(我们称之为 T2)。 T1 与 T2 有关系,T2 与 T1 相同,因此它们具有多对多关系,因此我创建了一个桥接表(我们称之为 T1_T2)。

T1.id T1_T2.T1id T2.id T2.id T1_T2.T2id T1.id

我的问题是下一个:我应该如何构建我的 java 类(T1、T1_T2、T2)并使用标准进行查询,只给出 一个 id(两个表中的任何一个)为参数?

希望有人能帮助我,谢谢!

【问题讨论】:

  • 网上的例子太多了,你试过了吗?
  • 是的,但主要是 hql,而不是标准...

标签: java hibernate annotations many-to-many criteria


【解决方案1】:

您可以在@ManyToMany 指向t1_t2 表之后使用注释@JoinTable 进行关系。见http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany

举个例子,一个用户有很多权限,一个权限有很多用户

用户

@Table(name="USER")
public class User() {

      @Id
      private Integer id;

      @ManyToMany
      @JoinTable(
        name="USER_GROUP",
        joinColumns={@JoinColumn(name="USER_ID")},
        inverseJoinColumns={@JoinColumn(name="GROUP_ID")})
      private List<Group> groups;
      ...

  }

权限

@Table(name="GROUP")
public class Group(){

      @Id
      private Integer id;

      @JoinTable(
        name="USER_GROUP",
        joinColumns={@JoinColumn(name="GROUP_ID")},
        inverseJoinColumns={@JoinColumn(name="USER_ID")})
      private List<Users> users;
      ...

 }

【讨论】:

  • 我应该在 t1_t2 中放什么?
  • @Ralsho,t1_t2 由 hibernate 维护用于多对多关联,hibernate 将为您放置外键。它只是一个连接表。
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2013-04-15
  • 2015-02-06
相关资源
最近更新 更多