繁体   English   中英

从Hibernate中的链接表中获取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM