我有将实体插入DB的方法;
public PollEvent insertPollEvents(PollEvent pollEvent) {
PollEvent merge = null;
try {
em.getTransaction().begin();
pollEvent.setSendDate(new Date());
pollEvent.setStatus(0);
pollEvent.setType(1);
pollEvent.setPollEvent(pollEvent);
pollEvent.setSms(null);
pollEvent.setId(null);
pollEvent.setAnswerRecived(null);
pollEvent.setRecivedDate(null);
pollEvent.setQuestionSend("опрос 2");
em.detach(pollEvent);
merge = em.merge(pollEvent);
em.getTransaction().commit();
em.clear();
} catch (Exception e) {
this.logger.log(Level.SEVERE, null, e);
}
return merge;
}
我选择实体并更改一些字段。之后我想设置pollEvent.setPollEvent(pollEvent);
并将实体保存到DB并返回新实体。它工作正常,但setPollEvent
设置了新实体的ID。例如,我需要:
id field1 field2 pool_id
1 xxx xxx NULL
2 xxx xxx 1
但我有
id field1 field2 pool_id
1 xxx xxx NULL
2 xxx xxx 2
这是因为我让em.detach(pollEvent);
和我的旧身份失去了。如何理解这个?