@OneToMany名单VS差集

是否有任何区别,如果我使用

@OneToMany public Set<Rating> ratings;

或者,如果我使用

@OneToMany public List<Rating> ratings;

都工作好了,我知道List和Set的区别,但我不知道这有什么差别如何休眠(或者说JPA 2.0)处理它。

--------------解决方案-------------

列表,如果没有指定索引列,将只是作为一个由Hibernate包(无特定顺序)进行处理。

在Hibernate中的处理的一个显着区别是,你不能在单个查询中取出两个不同的列表。 例如,如果你有一个Person有一个联系人列表和地址列表的实体,你将不能够使用单个查询来加载者与他们所有的联系人和他们的所有地址。 在这种情况下,解决方案是使两个查询(其避免了笛卡尔积),或者用一个Set ,而不是一个的List为集合中的至少一个。

这往往很难,当你必须定义使用与Hibernate集equalshashCode对实体和不具有实体不可变的功能键。

如果你使用一个列表,那么你可以指定一个'ORDER BY'的getter函数子句。 你不能做到这一点连一套。 order by子句可以包含部分EJBQL; 例如

@OneToMany
@OrderBy("lastname ASC")
public List<Rating> ratings;

如果保留该字段为空,则列表按升序基于主键的值进行排序。

分类:java的 时间:2012-09-05 人气:0
本文关键词: Java中,JPA
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.285 (s). 10 q(s)