【发布时间】:2015-05-23 01:33:45
【问题描述】:
假设您有一辆带有一系列轮胎的汽车。
@Entity
public class Car {
private Long id;
@OneToMany(mappedBy = "car")
private Set<Tire> tires = new HashSet<>();
}
@Entity
public class Tire {
private Long id;
...
}
现在,如果您想添加一辆新汽车并添加现有的轮胎,您可以获取整个现有的轮胎实体来填充汽车的集合。
是否可以简单地拥有一些轮胎 ID 并保存汽车而不首先将整个轮胎实体提取到内存中?如果它只是一个单一的轮胎实例而不是一个集合,有没有办法只用一个轮胎 ID 来保存它?使用 JPA 和 Criteria API,或者可能是 JPQL。
【问题讨论】:
-
不。 JPA 的全部意义在于表示和处理关系,因此您不能通过使用关系如何在您的数据库层中实际实现的知识来破解。
-
您可以使用实体图来获取部分填充的对象。
-
您使用的是什么版本的 JPA?我在这里使用 JPA 2.1 进行了测试,它并没有加载所有集合只是为了将一个项目添加到列表中。