在persist()之后跳过了JPA commit()行

时间:2018-11-22 04:07:33

标签: java jpa

我试图在数据库上添加一个新实体,但是每次我尝试在persist()之后跳过提交行。

public T salvar(T t) {
        EntityManager em = daoHelper.getEM();
        try {
            em.getTransaction().begin();
            if (t.getId() == null) {
                em.persist(t);
                em.getTransaction().commit();
            }
        } catch (Exception e) {
        } finally {
            em.close();
        }
        return t;
    }

我不知道出什么问题了,因为对象t是完整的。

编辑1:这些是我的实体属性

private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "Id")
    private Integer id;
    @Column(name = "idItem")
    private Integer idItem;
    @Column(name = "pedidoData")
    @Temporal(TemporalType.DATE)
    private Date pedidoData;
    @Size(max = 9)
    @Column(name = "pedidoEnderecoCep")
    private String pedidoEnderecoCep;
    @Column(name = "pedidoEnderecoNumero")
    private Integer pedidoEnderecoNumero;
    @Size(max = 85)
    @Column(name = "pedidoEnderecoBairro")
    private String pedidoEnderecoBairro;

这是我要添加的对象:

enter image description here

1 个答案:

答案 0 :(得分:0)

从更高层次看,问题似乎出在您保存 commit 语句的位置。您已将其保留在if条件中,因此 commit 只会在满足if条件时发生。例如,在您id共享的样本输入数据中,null不为空,因此,如果条件不成立,则不会发生 commit 如果您要发送具有空ID 的实体,则会进行提交。您应该将commit语句移至if块之外,如下:

 if (t.getId() == null) {
      em.persist(t);              
 }
 em.getTransaction().commit();