Java JPA:将实体与现有id合并

Java JPA:将实体与现有id合并,java,jpa,Java,Jpa,我正在使用JPA2.0开发一个web应用程序,并在每次请求时打开和关闭EntityManager。用户可以创建一个新实体,还可以设置id字段(该字段具有含义,我无法更改表结构)。要存储新实体,我必须使用EntityManager的“merge”方法,但是当已经存在具有相同id的现有实体时,它只会被更新。 我是否必须手动检查是否已经存在具有相同id的实体,或者是否可以以更好的方式进行检查?或者我的方法还有其他问题吗?如果使用persist方法,将为重复的ID抛出EntityPersistExcep

我正在使用JPA2.0开发一个web应用程序,并在每次请求时打开和关闭EntityManager。用户可以创建一个新实体,还可以设置id字段(该字段具有含义,我无法更改表结构)。要存储新实体,我必须使用EntityManager的“merge”方法,但是当已经存在具有相同id的现有实体时,它只会被更新。
我是否必须手动检查是否已经存在具有相同id的实体,或者是否可以以更好的方式进行检查?或者我的方法还有其他问题吗?

如果使用
persist
方法,将为重复的ID抛出
EntityPersistException


也就是说,从用户的角度来看,他越早知道已经使用了一个ID,效果越好(最好是在字段更新时使用ajax检查)。

如果使用
persist
方法,则会为重复的ID抛出一个
entitypersistscexception


也就是说,从用户的角度来看,他越早知道已经使用了ID,就越好(最好是在字段更新时使用ajax检查)。

为什么“必须使用“合并”方法”?如果实体已经存在,您想做什么?我无法使用persist,因为在每次请求时创建(并关闭)entitymanager实例后,我的实体已分离。我想阻止用户在实际想要创建新实体时更新现有实体。我不需要用户合并,我可以使用persist-不知何故我认为我不能…为什么“必须使用“merge”-方法”?如果实体已经存在,您想做什么?我无法使用persist,因为在每次请求时创建(并关闭)entitymanager实例后,我的实体已分离。我想阻止用户在实际想要创建新实体时更新现有实体。我不需要用户合并,我可以使用persist-不知何故我认为我不能…我不能使用persist,因为我在每个请求上创建了entitymanager实例。例如,在第一个请求中,我读取要在表中显示的实体,在第二个请求中,我存储一个新创建的实体。为每个请求创建一个新对象。如果我理解正确的话,您只是在添加新实体,不希望保留对数据库中已有实体所做的更改。不要使用分离的实体作为存储新值的对象。我对JPA没有太多经验,但我必须使用merge来附加实体(我已经在做的事情)。也许你可以澄清一点?谢谢,我认为这不管用,但我肯定有其他问题,它管用!我无法使用persist,因为我在每个请求上都创建了entitymanager实例。例如,在第一个请求中,我读取要在表中显示的实体,在第二个请求中,我存储一个新创建的实体。为每个请求创建一个新对象。如果我理解正确的话,您只是在添加新实体,不希望保留对数据库中已有实体所做的更改。不要使用分离的实体作为存储新值的对象。我对JPA没有太多经验,但我必须使用merge来附加实体(我已经在做的事情)。也许你可以澄清一点?谢谢,我认为这不管用,但我肯定有其他问题,它管用!