Hibernate映射异构继承对象的映射

时间:2011-04-24 15:31:39

标签: java hibernate orm multimap

我有下一个数据库架构:

CREATE TABLE A (id INTEGER);
CREATE TABLE Single_Values (fk_a INTEGER, fk_b INTEGER, value VARCHAR(255));
CREATE TABLE List_Values (fk_a INTEGER, fk_b INTEGER, value VARCHAR(255));
CREATE TABLE B (id INTEGER, name VARCHAR(255));

我有下一个对象模型(原理图):

class B{
    Integer id;
    String name;
}

class SingleValue extends B{
    String value;
}

class ListValues extends B{
    List<String> values;
}

class A{
    Integer id;
    Map<Integer, SingleValue> singleMap;
    Map<Integer, ListValues> listMap;
}

我接着制作了单值地图的映射:

<class name="B">
   <id name="id"/>
   <property name="name"/>
   <joined-subclass name="SingleValue">
       <key column="fk_b"/>
       <property name="value"/>
   </joined-subclass>
</class>
<class name="A">
    <id name="id"/>
    <map name="singleMap" table="Single_Values">
        <key column="fk_a"/>
        <map-key column="fk_b"/>
        <one-to-many class="B"/>
    </map>
</class>

我坚持使用listMap的映射。任何有关映射的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

请勿使用地图,请使用列表。如果要查找Map样式,请在从数据库中获取列表后使用查询或构建临时映射。另外,@ annotations会让你的生活更轻松吗?