JPA避免在插入之前加载对象

时间:2015-03-11 09:29:14

标签: java mysql hibernate jpa

人有“语言”字段的外键。如果我只获得一种语言的PK(“json.get(”language“)。asInt())并想插入一个新的人物,我怎么能避免加载整个”语言“对象?

@Entity
public class Person {
   String prename;
   String lastname;
   Language language;
}


Person p = new Person("Robert", "Meyer");
Language l = JPA.em().find(Language.class, json.get("language").asInt();
p.setLanguage(l);

是否可以在不加载整个Language对象的情况下进行?

1 个答案:

答案 0 :(得分:3)

您可以使用EntityManager#getReference()

  

获取一个实例,其状态可能会被懒散地取出。如果数据库中不存在请求的实例,则在首次访问实例状态时将引发EntityNotFoundException。

Person p = new Person("Robert", "Meyer");
Language l = JPA.em().getReference(Language.class, json.get("language").asInt();
p.setLanguage(l);