考虑像这样的实体
public class SomeEntity {
@ManyToOne
@JoinColumn(name = "company_fk")
private CompanyEntity company;
}
company_fk列是一个整数。在我的应用程序中,我经常发现自己的情况是我有company_fk整数,但我不一定有CompanyEntity。
我想要做的是创建SomeEntity的新实例并将其与CompanyEntity关联,因此我最终必须从数据库中读取CompanyEntity才能建立关系。这不是很好,因为即使我不需要这样做,我也会去db。
有没有办法避免为了建立关系而加载实体?我正在使用带有Hibernate的JPA 2,并且我愿意只使用hibernate映射来使这个工作有效。
答案 0 :(得分:2)
这正是em.getReference()
存在的原因。它假定具有给定ID的实体存在,并将代理返回给该实体:
// get a reference to the company without going to the DB:
CompanyEntity company = em.getReference(CompanyEntity.class, companyId);
SomeEntity e = new SomeEntity();
e.setCompany(company);
Hibernate的原生Session类具有相同的方法,除了它被称为load()
。