2012-08-01 61 views
1

考慮像一個整體,從而當我知道主鍵時建立JPA關係,但我沒有主鍵的實體?

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

的company_fk列是一個整數。在我的應用程序中,我經常發現自己處於擁有company_fk整數但我不一定擁有CompanyEntity的情況。

我想要做的是創建一個SomeEntity的新實例,並將其與CompanyEntity關聯,所以我最終必須從數據庫中讀取CompanyEntity,以便我可以建立關係。這不是很好,因爲即使我不需要這樣做,我也會去分貝。

有沒有辦法避免加載實體來建立關係?我在Hibernate中使用JPA 2,如果有辦法,我打算只使用hibernate映射來完成這項工作。

回答

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的本地會話類具有相同的方法,但它被稱爲load()