2012-01-13 36 views
0

我將hibernate用作JPA持久性提供程序,並且無法找到任何方法來處理文檔中的數據異常。使用JPA 2持久性處理數據異常

我有兩個實體:

@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 = XidX沒有節點。

我無法清理這些數據,因爲這個數據令人討厭,無關緊要。

有沒有什麼辦法可以配置JPA在碰到這些數據時不會爆炸?

+0

這表明數據庫缺乏一致性。這個列應該有一個不合理的關鍵約束,這將保證這種情況永遠不會發生。如果清理你的數據(這意味着執行一個簡單的SQL查詢)真的不是一個選項,那麼使用Alex的答案。但你應該清理它,並添加一個FK約束。 – 2012-01-14 11:09:05

+0

不幸的是,在這種情況下,我無法清理這些數據。正如我所說,這很煩人。 – idbentley 2012-01-16 16:57:55

回答

1

您可以使用@NotFound(忽略)註釋你的財產。 Javadoc here