JPA:如果其中一行无法添加,则添加不应失败

时间:2011-06-15 12:28:11

标签: hibernate jpa batch-file jpa-2.0

我使用JPA + Hibernate。

我有2个实体(Parent,Child),它们之间有OneToMany连接。我向父母添加了一个子列表,如下所示:

parent.setChildrent(childrenSet);
getEntityManager().merge(parent);

如果其中一个子实体包含无效值(例如,字符串太长),则其插入失败,整个事务失败。

有没有办法忽略/记录错误,并为其余的孩子继续合并?

我知道我可以逐个添加孩子,但是有更好的解决方案吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

  

如果其中一个子实体包含无效值(例如,字符串太长),...

你不应该通过处理数据库错误来处理这样的问题。 在开始向数据库执行事务之前,请尝试在应用程序中过滤太长的字符串或无效值。

如果存在数据库错误,则执行回滚并在撤消此事务时执行所有更改。

祝你好运