Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EntityManager在find挂起应用程序后保持_Java_Jpa_Entitymanager - Fatal编程技术网

Java EntityManager在find挂起应用程序后保持

Java EntityManager在find挂起应用程序后保持,java,jpa,entitymanager,Java,Jpa,Entitymanager,我正在使用JPA将一些数据持久化到一个表中。在持久化之前,我检查记录是否存在 公共布尔保存(学生){ //em下面是EntityManager对象 Student record=em.find(Student.class,Student.getId()); if(记录!=null) 返回false; em.persist(学生); 返回true; } 此方法挂起em.persist(student)你能告诉我我做错了什么吗。试着按照下面的代码编写 公共学生保存(学生输入){ if(entry.

我正在使用JPA将一些数据持久化到一个表中。在持久化之前,我检查记录是否存在

公共布尔保存(学生){
//em下面是EntityManager对象
Student record=em.find(Student.class,Student.getId());
if(记录!=null)
返回false;
em.persist(学生);
返回true;
}
此方法挂起
em.persist(student)你能告诉我我做错了什么吗。

试着按照下面的代码编写

公共学生保存(学生输入){
if(entry.getId()==null){
//如果您没有id,它是新的,所以请坚持
em.persist(条目);
}否则{
//如果您有id,那么它是现有条目的更新,所以合并。
条目=em.merge(条目);
}
返回条目;
}

更新 刚刚意识到

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

公共布尔保存(学生){
Student record=em.find(Student.class,Student.getId());
if(记录!=null)
返回false;
em.persist(学生);//★ 如果您通过已设置id的条目,可以吗?
返回true;
}
您是否尝试将
student.id
设置为空?

尝试按以下方式编码

公共学生保存(学生输入){
if(entry.getId()==null){
//如果您没有id,它是新的,所以请坚持
em.persist(条目);
}否则{
//如果您有id,那么它是现有条目的更新,所以合并。
条目=em.merge(条目);
}
返回条目;
}

更新 刚刚意识到

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

公共布尔保存(学生){
Student record=em.find(Student.class,Student.getId());
if(记录!=null)
返回false;
em.persist(学生);//★ 如果您通过已设置id的条目,可以吗?
返回true;
}

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

当我在find()之后立即使用persist()时,锁没有任何问题。由于我的代码挂在em.persist()行上,我不知道是否存在锁问题或没有。。。更新了答案。是的,我不想更新。只创建新记录。是的,对象的Id已经设置好了。但是仍然挂起Persistent,您是否尝试将student.id设置为null?ヾ(๑╹◡╹)ノ“当我在find()之后立即persist()时,锁没有任何问题。因为我的代码挂在em行上。persist()我不知道锁是否有任何问题。更新了答案。是的,我不想更新。只创建新记录。是的,对象的Id已经设置。但是仍然挂在persist上。您是否尝试将student.Id设置为null?ヾ(๑╹◡╹)ノ"在问题中包含实体代码在问题中包含实体代码