在我的应用程序中,我连接到一个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;
}
编辑:添加了一些代码示例
如何识别模型对象?放置在@Id字段中的值是否可能不是唯一的? – millhouse
每个Model类都有一个id字段,即null。我的课程扩展了模型。他们本身并不声明id字段。 – siamii
顺便说一句,我真的不明白这个消息的意思。 “独立实体通过坚持”意味着什么? (我不是母语的人) – siamii