
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表,两张表本质上是一样的吗? 展开
.......
<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是实体类,要麻烦一些,要维护主键值(代理主键或复合主键),但可以是双向关联引用,查询时更方便;而前一种只能单向引用,查询时有一定限制
带两个可用Map映射(dog_name 作为 map-key , dog_color 作为 map-value),
两个以上属性就要就嵌入类或关联类了
2、大体上一致的。不同在于后一种Cat是实体类,要麻烦一些,要维护主键值(代理主键或复合主键),但可以是双向关联引用,查询时更方便;而前一种只能单向引用,查询时有一定限制

2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询