2014-09-10 3 views
-1

Например, у меня есть следующие таблицы:Hibernate: отображение вложенных объектов -EDITED-

USER:

| USERID | USERNAME | USERTYPEID |

USERTYPE:

| USERTYPEID | USERTYPENAME |

Таким образом, USERTYPEID является внешним ключом, который пользователь использует для обозначения типа пользователя. Реализация JAVA как таковой:

У меня есть пользовательский класс и класс UserType, где выглядит как:

public class User { 
    private int id; 
    private UserType ut; 
    .... 
} 

public class UserType { 
    ... 
} 

В User.hbm.xml:

<hibernate-mapping> 
    <class name="com.pretech.User" table="User"> 
     <meta attribute="class-description"> 
     This class contains the employee detail. 
     </meta> 
     <id name="id" type="int" column="UserID"> 
     <generator class="native"/> 
     </id> 
    </class> 
</hibernate-mapping> 

Так мои вопросы следует:

1) что мне следует поместить на карту UserType и указать UserType как внешний ключ?

2) В случае пользователя включает в себя список UserType (не может концептуально верно, но просто хочу, чтобы использовать в качестве примера), такие как:

public class User { 
    private int id; 
    private List<UserType> uts; 
} 

что Шоуда я об отображении спящего режима?

EDIT: Добавлены сведения о внешнем ключевом материале.

+0

Если оба 'user' и' user_type' представляют собой две разные таблицы, вы можете использовать прямое одно-много сопоставление. –

+0

@ Rp- Это две разные таблицы, и как hibernate знает, что usertypeId в таблице пользователя является внешним ключом, ссылающимся на таблицу usertype? – jamesdeath123

ответ

1

Есть так много примеров, доступных в сети для вашего примера, вы можете также проверить hibernate documentation:

Например, если вы хотите иметь User объект с набором UserType's, то вы можете использовать one-to-many отношения и отображение файл будет:

<class name="User"> 
    <id name="id" column="id"> 
     <generator class="native"/> 
    </id> 
    <set name="uts"> 
     <key column="userId" 
      not-null="true"/> 
     <one-to-many class="UserType"/> 
    </set> 
</class> 

<class name="UserType"> 
    <id name="id" column="id"> 
     <generator class="native"/> 
    </id> 
</class> 

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

+0

Не могли бы вы объяснить, как hibernate знает, что usertypeId в таблице пользователя является внешним ключом, ссылающимся на таблицу usertype? – jamesdeath123

+0

В моем примере в соответствии с отображением таблица 'UserType' будет иметь внешний ключ с именем' userId', который ссылается на таблицу 'User'. Строка '' представляет внешний ключ. Я думаю, что вам лучше пройти этот документ, и вы научитесь учиться спящим. – Chaitanya

0

Должен быть OneToOne или OneToMany в зависимости от UserType - это одна ссылка или несколько (список коллекции). Поиск в Google и вы получите множество руководств с основами на основе xml и аннотациями

+0

Не могли бы вы объяснить, как hibernate знает, что usertypeId в таблице пользователя является внешним ключом, ссылающимся на таблицу usertype? – jamesdeath123

Смежные вопросы