java - @OneToMany List<> vs Set<> 区别

标签 java jpa

如果我用有什么区别

@OneToMany
public Set<Rating> ratings;

或者如果我使用

@OneToMany
public List<Rating> ratings;

两者都工作正常,我知道列表和集合之间的区别,但是我不知道这是否会影响 hibernate(或者更确切地说是 JPA 2.0)处理它的方式。

最佳答案

如果没有指定索引列,则列表将被 Hibernate 作为一个包处理(没有特定顺序)。

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

当您必须在实体上定义 equalshashCode 并且在实体中没有不可变的功能键时,通常很难将 Sets 与 Hibernate 一起使用。

关于java - @OneToMany List<> vs Set<> 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6562673/

相关文章:

java - 具有两个 ID 的实体

java - 客户端与服务器的对话以及 JPA 事务

java - 有没有办法覆盖继承的生成策略?

Java 8 - 使用 BiPredicate 进行过滤

java - JPA ManyToMany 在创建时不会插入到联接表中

Java Android方法需要很长时间才能执行?

java - 在 Java 中发布和停止端点 Web 服务

java - 如何使用 Glassfish 2.1 在 JPA 中实现悲观锁定?

java - 当 mvn install 神秘失败时 -

java添加到路径时,java.exe不被识别为内部或外部命令可操作程序或批处理文件