Java 在persist()之后跳过了JPA commit()行
我正在尝试在数据库中添加新实体,但每次尝试时,提交行都会在persist()之后跳过 我不知道怎么了,因为对象t是完整的 编辑1:这些是我的实体属性Java 在persist()之后跳过了JPA commit()行,java,jpa,Java,Jpa,我正在尝试在数据库中添加新实体,但每次尝试时,提交行都会在persist()之后跳过 我不知道怎么了,因为对象t是完整的 编辑1:这些是我的实体属性 private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @NotNull @Column(name = "Id") private Integer id; @Column(name = "idItem"
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;
这就是我要添加的对象:
在更高的层面上,问题似乎是因为您保存了提交声明的位置。您将其保存在if条件中,因此只有当满足if条件时才会执行commit。例如,在示例中,您共享的id输入数据不为null,因此,如果不满足条件,则不会发生提交,相反,如果您将发送id为null的实体,则会发生提交。应将commit语句移到if块之外,如下所示:
if (t.getId() == null) {
em.persist(t);
}
em.getTransaction().commit();
它只发生在一个实体上。我刚刚测试过,相同的代码与另一个实体一起工作。您可以共享发送到此方法的输入序列吗?@codeLover当然可以。我用更多信息编辑了这个问题。如果提交被“跳过”,则抛出一个可丢弃的
。结束。因此,请调试引发异常的原因。基本java.commit()行仍然被跳过您能解释一下“commit()行仍然被跳过”的确切含义吗?当我进入persist()行并单击移动到下一行时,它会在调试模式下直接转到em.close()。就像em.getTransaction().commit();不存在。你的意思是扔掉一个垃圾。所以,调试您的代码,看看抛出了什么样的Throwable!
if (t.getId() == null) {
em.persist(t);
}
em.getTransaction().commit();