2015-08-02 4 views
0

У меня есть подразделения и сотрудники, я хочу отобразить их как один для многих. Как использовать List в XML-сопоставлении вместо Set? Я нашел этот код из Интернета, но при выполнении "from Department" ошибка "Repeat property department_id in Employee.department", но если я удалю <index> в отделе, это будет be "Unable to read XML". Department.hbm.xmlКак использовать Список в формате Hibernate XML?

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated Aug 2, 2015 7:14:52 AM by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="emp.entity.Department" table="department" schema="dbo" catalog="Emp" optimistic-lock="version"> 
     <id name="departmentId" type="long"> 
      <column name="department_id" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="deptName" type="string"> 
      <column name="dept_name" length="50" not-null="true" /> 
     </property> 
     <list name="employees" table="Employee" inverse="true" cascade="all" > 
      <key> 
       <column name="department_id" /> 
      </key> 
      <index column="department_id"></index> 
      <one-to-many class="emp.entity.Employee" /> 
     </list> 
    </class> 
</hibernate-mapping> 

Employee.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated Aug 2, 2015 7:14:52 AM by Hibernate Tools 4.3.1 --> 
<hibernate-mapping> 
    <class name="emp.entity.Employee" table="Employee" schema="dbo" catalog="Emp" optimistic-lock="version"> 
     <id name="employeeId" type="int"> 
      <column name="employee_id" /> 
      <generator class="assigned" /> 
     </id> 
     <many-to-one name="department" class="emp.entity.Department" fetch="select"> 
      <column name="department_id" /> 
     </many-to-one> 
     <property name="firstname" type="serializable"> 
      <column name="firstname" /> 
     </property> 
    </class> 
</hibernate-mapping> 

ответ

1

Как говорится, там должен быть отчетливыми два столбца для идентификатора дочернего элемента и индексировать ребенок в списке, так ваше определение списка должно быть:

<list name="employees" inverse="true" cascade="all" > 
     <key> 
      <column name="department_id" /> 
     </key> 
     <index column="other_column_to_keep_the_order_of_the_element_in_the_list"></index> 
     <one-to-many class="emp.entity.Employee" /> 
</list> 

Если вам просто нужны элементы, чтобы быть в списке, и не нужно иметь свой заказ хранится в базе данных, вы можете объявить <bag> вместо <list>.

+0

Спасибо, мы можем использовать сумку с заказом – Andiana

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

  • Нет связанных вопросов^_^