Обработка исключений данных с сохранением JPA 2

99
17

Я использую hibernate в качестве провайдера переносимости JPA и не смог найти способ обработать исключения данных в документации.

У меня есть два объекта:

@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, чтобы не взорваться, когда он попадает в эти данные?

спросил(а) 2021-01-19T17:07:47+03:00 2 месяца, 3 недели назад
1
Решение
62

Вы можете использовать аннотацию @NotFound (IGNORE) для своего свойства. Джавадок здесь

ответил(а) 2021-01-19T17:07:47+03:00 2 месяца, 3 недели назад
44

Ну, вы не можете подавить исключение JPA. Однако вы можете создать прослушиватель объектов, который прослушивает сохранение/обновление сущностей, а также кэширует и обрабатывает любые исключения, которые могут возникнуть у них:


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

ответил(а) 2021-01-19T17:07:47+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема