• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

PersistentObjectException:传递给persist的分离实体

java 来源:siamii 4次浏览

在我的应用程序中,我连接到一个websocket。 套接字发送JSON数据。当它变得可用时,我在不同的工作中处理它。在每项工作中,我都将JSON转换为带有GSON的模型对象。有3种类型的模型,都是独立的,并且在MappedSuper类中有一个共同的时间戳字段。他们没有一个明确的字段。我在模型上调用保存,并在1000次中的1次中抛出“PersistentObjectException:传递给持久化的分离实体”。PersistentObjectException:传递给persist的分离实体

从启动作业连接到WebSocket调用多个作业。我正在使用的库为每个传入消息创建一个不同的线程。然后在保存到数据库之前将线程转换为作业。我这样做,因为否则另一个PersistentObjectException抛出有关将ID从1更改为2或类似的东西,如果我允许原始线程调用保存。

我还有另一个同时访问数据库的作业。什么可能是错的?

@Override 
public void onMessage(final WebSocketMessage message){ 
     new Job() { 
      @Override 
      public void doJob() { 
       processMessage(message.getText()); 
      } 
     }.now(); 

} 

public void processMessage(String message) { 
     Appointment appointment = new Gson().fromJson(message, Appointment.class); 
     appointment.save(); 
} 

@Entity 
public class Appointment extends CalendarEvent { 
     private String owner; 
} 

@MappedSuperclass 
public abstract class CalendarEvent extends Model { 
     private long timestamp; 
} 

编辑:添加了一些代码示例


===========解决方案如下:

我发现此解决方法现在可以工作。也许这与Gson和Jpa如何互动有关。不确定…

public void processMessage(String message) { 
     Appointment appointment = new Gson().fromJson(message, Appointment.class); 
     //recreate appointment 
     appointment = new Appointment(appointment); 
     appointment.save(); } 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)