[英]Fetching data from Linking Table in Hibernate
我是Hibernate的新手,还没有对可能出现的一些更复杂的查询做出决定。 所以我有一个超级简单的数据库架构:
然后我具有用户,列表和任务的Hibernate映射,如下所示:
用户:
<hibernate-mapping>
<class name="com.brennydoogles.User" table="user">
<id name="userID" column="UserID"/>
<property name="userName" column="UserName"/>
<property name="password" column="Password"/>
<property name="emailAddress" column="EmailAddress"/>
<set name="todoLists" table="userhaslist" lazy="false">
<key column="UserID"/>
<many-to-many column="ListID" class="com.brennydoogles.TodoList"/>
</set>
</class>
</hibernate-mapping>
清单:
<hibernate-mapping>
<class name="com.brennydoogles.TodoList" table="list">
<id name="listID" column="ListID"/>
<property name="title" column="Title"/>
<property name="description" column="Description"/>
<set name="tasks" table="TASKINLIST" lazy="false">
<key column="ListID"/>
<many-to-many column="TaskID" class="com.brennydoogles.Task"/>
</set>
</class>
</hibernate-mapping>
任务:
<hibernate-mapping>
<class name="com.brennydoogles.Task" table="task">
<id name="taskID" column="TaskID"/>
<property name="title" column="Title"/>
<property name="description" column="Description"/>
</class>
</hibernate-mapping>
这使我可以非常简单地获取一个User(及其所有列表和任务)或一个List(及其所有任务)。 我现在想做的是找出有权访问特定列表的所有用户的列表。 我似乎无法弄清楚该怎么做,我想知道链接表是否缺少某些配置。
有没有人对如何执行此操作有任何建议(好的休眠教程也可能很好)?
您不能通过实体的方式设置实体。
注意User
引用了一个或多个TodoLists
,但是TodoList
没有任何映射回User
属性。 您需要定义另一个属性,然后您可以执行所需的操作。
用图解法表示,(其中-->
表示“可以通过属性访问”):
User --> TodoList
你要:
User <--> TodoList
TodoList
的属性映射看起来像这样(很抱歉,如果不是100%准确,我在Hibernate中使用批注):
<set name="usersWithAccess" table="userhaslist" lazy="false">
<key column="ListId"/>
<many-to-many column="UserId" class="com.brennydoogles.User"/>
</set>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.