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

<classname="User"table="user">.......<listname="dogs"table="dog"><!--key元素映射外键列--><ke... <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表,两张表本质上是一样的吗?
展开
 我来答
herrywood
2012-10-29 · TA获得超过869个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:488万
展开全部
1、因为List构成就是Index-Value,所以只能带一个element
带两个可用Map映射(dog_name 作为 map-key , dog_color 作为 map-value),
两个以上属性就要就嵌入类或关联类了
2、大体上一致的。不同在于后一种Cat是实体类,要麻烦一些,要维护主键值(代理主键或复合主键),但可以是双向关联引用,查询时更方便;而前一种只能单向引用,查询时有一定限制
Storm代理
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
加一肥一猫
2012-10-31 · TA获得超过127个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:86.1万
展开全部
1、要看你的dog.hbm.xml怎么写的
2、表都是通过xml生成的
或许你给两个完整的映射表,帮你看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式