em.persist()在JPA中需要父实体对象

时间:2012-10-11 08:12:47

标签: java jpa

在下面的代码中,每次我需要通过Dept deptId来获取createUser()对象,当我坚持使用Emp时,我不想去数据库。我想要JDBC只传递id而不是对象。每次从数据库效果中获得性能。我该怎么做?

public class Emp {
  Integer eid;
  String ename;
  long sal;
  Dept dept;    

  public void createUser(Integer eid,String ename,long sal,Integer deptId) {
    Dept dept = em.find(Dept.class,deptId);
    Emp emp = new Emp();
    emp.setEid(101);
    emp.setEname("Smith");
    emp.setSal(100000);
    emp.setDept(dept);    // here Dept object required 
    em.persist(emp);
  }

}

public class Dept {
  Integer deptid;
  String deptname;
}

2 个答案:

答案 0 :(得分:2)

阅读API doc for EntityManager ...

  • getReference() - 如果您只需要它作为参考(根据文档可能会延迟提取实例)
  • find() - 如果您还想使用其属性

答案 1 :(得分:1)

我认为em.getReference()符合这些需求