使用JPA 2持久性处理数据异常

时间:2012-01-13 22:17:23

标签: java hibernate jpa-2.0

我正在使用hibernate作为JPA Persistence提供程序,并且无法找到任何方法来处理文档中的数据异常。

我有两个实体:

@Entity
public class Item {
    @Id
    @GeneratedValue
    Long id;

    @ManyToOne
    @JoinColumn(name="node_id")
    Node node;
    .. snip ..
}

@Entity
public class Node {
    @Id
    @GeneratedValue
    Long id;

    @OneToMany
    @JoinColumn(name="node_id")
    List<Item> items;
    .. snip ..
}

在我的数据库中,我有一个数据异常,其中有一个项目行,node_id = X但没有id X的节点。

由于恼人的,无关的原因,我无法清理这些数据。

有什么方法可以让JPA在碰到这些数据时不会爆炸?

2 个答案:

答案 0 :(得分:1)

您可以在属性上使用@NotFound(IGNORE)注释。 Javadoc here

答案 1 :(得分:0)

嗯,你不能扼杀JPA的例外。但是,您可以创建一个侦听实体保存/更新的实体侦听器,并缓存并处理可能来自它们的任何异常:

http://docs.oracle.com/cd/B31017_01/web.1013/b28221/cmp30cfg015.htm

相关问题