繁体   English   中英

JPA使用它的id来保存“new”实体并参考现有实体?

[英]JPA save “new” Entity with reference to an existing Entity using only it's id?

假设你有一辆带有轮胎系列的汽车。

@Entity
public class Car {
    private Long id;
    @OneToMany(mappedBy = "car")
    private Set<Tire> tires = new HashSet<>();
}

@Entity
public class Tire {
    private Long id;
    ...
}

现在,如果您想要添加新车并添加现有轮胎,您可以获取整个现有轮胎实体以填充Car's Set。

是否可以简单地使用一些轮胎ID并保存汽车而不首先将整个轮胎实体提取到内存中? 有没有办法用Tire Id保存它,如果它只是一个单轮胎实例而不是一个Set? 使用JPA和Criteria API,或者可能是JPQL。

您可以使用id通过EntityManager.getReference加载代理“代理”对象。 除非您访问该对象的任何属性,否则它不会发出任何数据库查询。

如果您访问属性,则延迟加载机制将启动并加载实际对象。 以下问题演示了代理对象的解剖。 有助于获得更好的图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM