2014-01-19 1 views
0

Я новичок в Hibernate и еще не обмотал некоторые из более сложных запросов, которые возможны. Так что у меня есть супер простой схемы базы данных: Database SchemaИзвлечение данных из таблицы ссылок в спящем режиме

, а затем у меня есть спящий режим отображения для пользователя, список, и задачи следующим образом:

Пользователь:

<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> 

Это позволяет мне очень просто захватить пользователя (со всеми их списками и задачами) или Список (со всеми его задачами). Теперь я хочу узнать список всех пользователей, имеющих доступ к определенному списку. Я не могу понять, как это сделать, и мне интересно, есть ли у меня недостающая конфигурация для таблиц связывания.

Есть ли у кого-нибудь советы о том, как это сделать (хорошие учебники спящего режима могут быть приятными)?

ответ

0

Вы не можете сделать это с помощью своих объектов, настроенных так, как они есть.

Обратите внимание, что 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> 
Смежные вопросы