我试图在数据库上添加一个新实体,但是每次我尝试在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;
这是我要添加的对象:
答案 0 :(得分:0)
从更高层次看,问题似乎出在您保存 commit 语句的位置。您已将其保留在if条件中,因此 commit 只会在满足if条件时发生。例如,在您id共享的样本输入数据中,null不为空,因此,如果条件不成立,则不会发生 commit 如果您要发送具有空ID 的实体,则会进行提交。您应该将commit语句移至if块之外,如下:
if (t.getId() == null) {
em.persist(t);
}
em.getTransaction().commit();