如何在JPA中克隆实体并将id从旧实体设置为新实体的某些列?

时间:2015-12-17 05:16:00

标签: java jpa

我有将实体插入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);和我的旧身份失去了。如何理解这个?

0 个答案:

没有答案
相关问题