我有这个词:
class Persona{
id
name
...
}
class Cliente extends Persona{
Date medicalRecord
...
}
class Empleado extends Persona{
Especialidad specs
int points
...
}
class Especialidad{
...
}
class EmpleadoEspecialidad{
long id
Empleado emp
Especialidad esp
}
我有这个映射:
<class name="Persona" table="persona">
<id name="ID" type="long" unsaved-value="null">
<column name="persona_id" index="id_index" />
<generator class="identity" />
</id>
<discriminator column="per_tipo" force="true" insert="true" not-null="true" />
<subclass name="Cliente" discriminator-value="cliente">
<join table="cliente">
<key column="cl_id" />
</join>
</subclass>
<subclass name="Empleado" discriminator-value="empleado">
<join table="empleado">
<key column="em_id" />
</join>
</subclass>
</class>
</hibernate-mapping>
使用此表:
+-----------------------+
| Tables |
+-----------------------+
| cliente |
| empleado |
| empleado_especialidad |
| especialidad |
| persona |
+-----------------------+
我想在Empleado
添加一个或多个对象类型Especialidad
并在表empleado_id
上保存每条记录(especialidad_id
和empleado_especialidad
)从Especialidad
获取Empleado
直接列表(如List<Especialidad> getListOfEspecialidad()
)
我怎么能这样做呢?
我想要多对多,因为在我的应用程序的某些部分,我必须列出来自某些Empleado
的所有especialidad
。
我试过这个:
<component name="component" >
<list name="list" table="empleado_especialidad" cascade="all">
<key column="em_id" />
<index column="es_id" />
<one-to-many class="Especialidades" not-found="ignore" />
</list>
</component>
子类Empleado
的内部连接,但是每个记录都转到表especialidad
,其中我有一个对象especialidad
的列表(可由用户配置),我不能使用它多个especialidad
上的Empleado
。
我希望在这种情况下使用数据库:
Persona
id:1 Name:Emp1
id:2 Name:EmpOfMonth
Empleado:
id:1 points:10
id:2 points:5
Especialidad
id:1 name:Especialidad1
id:2 name:EspecialidadX
id:3 name:Especialidad2
id:4 name:EspecialidadN
EmpleadoEspecialidad
emp_id:1 esp_id:1
emp_id:1 esp_id:3
emp_id:2 esp_id:2
emp_id:2 esp_id:1
emp_id:2 esp_id:3
答案 0 :(得分:0)
解决方案是改变这个:
<one-to-many ... />
到这个
<many-to-many ... />