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

标签 java jpa

每次我需要获取Dept时,都在下面的代码中通过传递对象 deptIdcreateUser()当我持久化 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;
}

最佳答案

阅读API doc for EntityManager ...

  • getReference() - 如果您只需要它作为引用(可能会根据文档延迟获取实例)
  • find() - 如果您也想使用它的属性

关于java - em.persist() JPA 中需要父实体对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12835057/

相关文章:

java - 在 JPA 中保留非原始数据

java - @JoinColumn 使用不同的列名称

servlets - GAE + JPA :java. lang.NoClassDefFoundError:无法初始化类 EMF

java - 常量特定类主体的非泛型 getClass() 方法是通过设计还是对 Java 的监督?

java - 如何使用 MySql 处理日语搜索查询?

inputText中的java代码

java - 如何持久化 JPA map @OneToMany

java - EclipseLink 延迟加载卡在引用类上

java - 在java中使用Set/TreeSet的平均时间复杂度是多少?

java - 发现多个名为 [spring_web] 的片段/无法找到元素 'beans' 的声明/服务器无法访问互联网