JPA 避免在插入之前加载对象
JPA avoid loading Objects before Insert
人有字段"Language"的外键。如果我刚得到一种语言的 PK ("json.get("language").asInt()) 并想插入一个新的 Person,我怎样才能避免加载整个 "Language" 对象?
@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);
有没有可能不用加载整个语言对象就可以做到这一点?
您可以使用 EntityManager#getReference()。
Get an instance, whose state may be lazily fetched. If the requested instance does not exist in the database, the EntityNotFoundException is thrown when the instance state is first accessed.
Person p = new Person("Robert", "Meyer");
Language l = JPA.em().getReference(Language.class, json.get("language").asInt();
p.setLanguage(l);
人有字段"Language"的外键。如果我刚得到一种语言的 PK ("json.get("language").asInt()) 并想插入一个新的 Person,我怎样才能避免加载整个 "Language" 对象?
@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);
有没有可能不用加载整个语言对象就可以做到这一点?
您可以使用 EntityManager#getReference()。
Get an instance, whose state may be lazily fetched. If the requested instance does not exist in the database, the EntityNotFoundException is thrown when the instance state is first accessed.
Person p = new Person("Robert", "Meyer");
Language l = JPA.em().getReference(Language.class, json.get("language").asInt();
p.setLanguage(l);