1

考虑这样的实体

public class SomeEntity {
    @ManyToOne
    @JoinColumn(name = "company_fk")
    private CompanyEntity company;
}

company_fk 列是一个整数。在我的应用程序中,我经常发现自己有 company_fk 整数,但不一定有 CompanyEntity。

我想要做的是创建 SomeEntity 的新实例并将其与 CompanyEntity 相关联,因此我最终不得不从数据库中读取 CompanyEntity 才能建立关系。这不是很好,因为即使我不需要这样做,我也会去数据库。

有没有办法避免仅仅为了建立关系而加载实体?我正在将 JPA 2 与 Hibernate 一起使用,如果有办法,我愿意使用仅休眠映射来完成这项工作。

4

1 回答 1

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().

于 2012-08-01T12:54:13.743 回答