Hibernate映射中集合映射与关联映射的区别及联系?

<class name="User" table ="user">
.......
<list name="dogs" table="dog">
<!-- key元素映射外键列 -->
<key column="userId" ></key>
<!-- 对于数组,List集合,使用list-index映射索引列 -->
<list-index column="dog_id"></list-index>
<!-- element映射标量类型的集合元素 -->
<element type="string" column="dog_name"></element>
</list>
</class>

这样看:1.
userId和dog_id一起构成表dog的主键,dog_name是值。确实可以在数据库中生成一张这样的dog表。按我的理解应该可以在后面再加一个元素:
<element type="string" column="dog_color"></element>
但是事实是错的,为什么呢?
2. 关联映射的时候,cat成为实体:
这里的<element ....>--->
<one-to-many class="Cat" />
我的理解是:上面的list集合映射成的cat表就类似用现在的实体生成的cat表,两张表本质上是一样的吗?

1、因为List构成就是Index-Value,所以只能带一个element
带两个可用Map映射(dog_name 作为 map-key , dog_color 作为 map-value),
两个以上属性就要就嵌入类或关联类了
2、大体上一致的。不同在于后一种Cat是实体类,要麻烦一些,要维护主键值(代理主键或复合主键),但可以是双向关联引用,查询时更方便;而前一种只能单向引用,查询时有一定限制
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
1、要看你的dog.hbm.xml怎么写的
2、表都是通过xml生成的
或许你给两个完整的映射表,帮你看看

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网