java - find 挂起应用程序后 EntityManager 仍保留

标签 java jpa entitymanager

我使用JPA将一些数据保存到表中。在坚持之前,我检查该记录是否存在。

    public boolean save(Student student) {
        //below em is an EntityManager object
        Student record = em.find(Student.class, student.getId());
        if (record != null)
            return false;
        em.persist(student);
        return true;
    }

此方法卡在 em.persist(student); 上,您能告诉我我做错了什么吗?

最佳答案

尝试按如下方式编写代码。

public Student save(Student entry) {
  if (entry.getId() == null) {
    // If you don't have id, it's new, so persist
    em.persist(entry);
  } else {
    // If you have id, it's an update of the existing entry, so merge.
    entry= em.merge(entry);
  }
  return entry;
}
<小时/>

更新

现在才意识到。

您显然只想保存新条目,对吧?
换句话说,您不想保存/更新现有条目,是吗?

public boolean save(Student student) {
  Student record = em.find(Student.class, student.getId());
  if (record != null)
    return false;
  em.persist(student); // ★ Is it ok, if you pass entry with already set id?
  return true;
}

您是否尝试将 student.id 设置为 null?

关于java - find 挂起应用程序后 EntityManager 仍保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782919/

相关文章:

java - Java 中的用户登录 - JAAS/JNDI/GSSAPI

spring - 建议 javax.persistence.EntityManager 与 AspectJ 不起作用

java - 在 BaseX 数据库上运行命令

java - 单元测试时在何处处理 NullPointerException(在函数中或构造函数中)

java - 使用 byte、short 和 char 毫无意义

java - 从 JPA 读取数据的方法

java - JPA/Hibernate Persist 级联,即使它不应该

jpa - Java 10 上带有 JPA 静态元模型的 JHipster5 项目

java - 我什么时候应该关闭实体管理器?

java - 没有可用的事务性 EntityManager - 使用 JPA Api,Hibernate Session 出错