首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Hibernate的Entit Manager数据值重复的有关问题

2013-03-14 
Hibernate的Entit Manager数据值重复的问题问题描述:当使用Hibernate的Anotation来定义一个复杂对象时,有

Hibernate的Entit Manager数据值重复的问题
问题描述:
当使用Hibernate的Anotation来定义一个复杂对象时,有可能需要关联别的表,当该对象与关联的表的关系为一对多,或多对多时,即 Entity的属性值为数组或者集合,且上面加有 @org.hibernate.annotations.CollectionOfElements @OneToMany或者@ManyToMany标签时,Hibernate会把该属性当做一个包来处理, 示例代码:




当Hibernate在解析ID为122 的Parent 的时候, 会首先把与该Entity相关的数据全部获取出来,形成如下的表结构:


从上表中标红的字体,可以发现,虽然CHILD2表里面只有一行数据,但是却在数据中重复出现了2次,这就导致在child2s这个集合属性值里面有2条一模一样的数据。

解决方法:
1、为属性值添加Anotation @IndexColumn(name="child2_id") 以指定属性值关联表的unique ID,当Hibernate解析该属性值,会先查看是否已经加载过相同的属性值,这样就避免了相同数据的重复加载。

2、把属性值的类型修改为Set这样,就当Hibernate把数据添加到属性值的时候就自动去重了。

热点排行