如果我使用,有什么不同
@OneToMany
public Set<Rating> ratings;
Run Code Online (Sandbox Code Playgroud)
或者如果我使用
@OneToMany
public List<Rating> ratings;
Run Code Online (Sandbox Code Playgroud)
两者都工作正常,我知道列表和集合之间的区别,但我不知道这有什么不同,如何hibernate(或更确切地说JPA 2.0)处理它.
JB *_*zet 104
如果没有指定索引列,则列表将由Hibernate作为包处理(没有特定的顺序).
Hibernate处理的一个显着差异是您无法在单个查询中获取两个不同的列表.例如,如果您的Person实体具有联系人列表和地址列表,则您将无法使用单个查询来加载具有所有联系人及其所有地址的人员.在这种情况下的解决方案是进行两个查询(避免笛卡尔积),或者使用a Set而不是List至少一个集合.
当您必须在实体上定义equals和hashCode在实体中没有不可变的功能键时,通常很难使用带有Hibernate的Sets .
Bas*_*Roy 29
如果使用List,则可以在getter函数中指定"Order BY"子句.你不能用Set做到这一点.order by子句可以包含部分EJBQL; 例如
@OneToMany
@OrderBy("lastname ASC")
public List<Rating> ratings;
Run Code Online (Sandbox Code Playgroud)
如果将此字段留空,则列表将根据主键的值按升序排序.
| 归档时间: |
|
| 查看次数: |
41924 次 |
| 最近记录: |