kam*_*aci 24 java spring hibernate list set
我的Java bean有很多关系.当我List
用来定义我的变量时:
@Entity
@Table(name="ScD")
public class Group extends Nameable {
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinColumn(name="b_fk")
private List<R> r;
//or
private Set<R> r;
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'
...
Run Code Online (Sandbox Code Playgroud)
当我使用Set
一切似乎运作良好.
我想问一下,当使用多对多关系时,哪一个用于逻辑概念List
或Set
(因为列表可能有重复和设置,但性能和其他问题怎么样)?
Tom*_*icz 60
从关系数据库的角度来看,这是一个集合.数据库不保留顺序并且使用a List
是无意义的,它们中的顺序是未指定的(除非使用所谓的索引集合).
使用a Set
也有很大的性能影响.当List
使用时,Hibernate使用PersistentBag
下面的集合,它具有一些可怕的特性.即:如果你添加一个新的关系,它将首先删除所有现有的关系,然后将它们插回+你的新关系.有了Set
它只是插入一个新记录.
第三件事 - 你不能List
在一个实体中拥有多个s因为你会得到臭名昭着的不能同时获取多个包的例外.
也可以看看:
归档时间: |
|
查看次数: |
17161 次 |
最近记录: |