我將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 = X
但id
X
沒有節點。
我無法清理這些數據,因爲這個數據令人討厭,無關緊要。
有沒有什麼辦法可以配置JPA在碰到這些數據時不會爆炸?
這表明數據庫缺乏一致性。這個列應該有一個不合理的關鍵約束,這將保證這種情況永遠不會發生。如果清理你的數據(這意味着執行一個簡單的SQL查詢)真的不是一個選項,那麼使用Alex的答案。但你應該清理它,並添加一個FK約束。 – 2012-01-14 11:09:05
不幸的是,在這種情況下,我無法清理這些數據。正如我所說,這很煩人。 – idbentley 2012-01-16 16:57:55