jpa删除数据后数据库无修改_java – JPA不删除数据库行

我正面临着JPA的删除问题,这是我的代码:

public deleteLine(int idLine) {

Line line = em.find(Line.class,idLine);

Header header = line.getHeader();

this.deleteLine(header,line);

}

public boolean deleteLine(Header header, Line line) {

try {

line.setIdArticle(null);

line.setDetail(DELETED_TAG);

line.setQuantity(0.0f);

em.merge(line);

header.getLineCollection().remove(line);

em.remove(line);

em.flush();

}

catch (Exception ex) {

LOG.log(Level.SEVERE, null, ex);

}

return true;

}

当我调用deleteLine()时,我以一个数据库行结束,idArticle为null,详细信息等于DELETED_TAG常量,数量等于0.但是行仍然存在,尽管em.remove.

我试图在删除之前添加一个line.setHeader(null),但是我得到一个ConstraintViolationException,因为header字段不能为null.

显然我做错了什么,但我无法弄清楚是什么.

有实体代码:

public class Header implements Serializable {

[...]

@OneToMany(cascade = CascadeType.ALL, mappedBy = "header")

private Collection lineCollection;

[...]

}

public class Line implements Serializable {

[...]

@JoinColumn(name = "header", referencedColumnName = "header")

@ManyToOne(optional = false)

private Header header;

[...]

}

我已经完成了通过JPQL(DELETE FROM Linea WHERE idLinea =?)删除行的测试,并且它有效地删除了该行.但是,当JPA执行提交时,由于JPA执行了INSERT,该行重新出现.

有没有办法发现原因?显然,有一个生成插入的实体,但我正在从标题中删除该行,那么我该怎么做才能找出触发插入的内容?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值