Я пишу новое приложение, которое использует старую базу данных.
У меня есть таблица с именем "Score", которая выглядит следующим образом:
+-----+------------+--------------------------+
| id | name | sub_score |
+-----+------------+--------------------------+
| 205 | High Score | 206 |
| 206 | Mid Score | 207 |
| 207 | Low Score | 0 |
+-----+------------+--------------------------+
Моя модель Entity для этого:
@Entity
@Table(name = "score")
public class ScoreGroups implements Serializable {
private int id;
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
@JoinColumn(name = "haupt_kondition_id")
@NotFound(action = NotFoundAction.IGNORE)
private ScoreGroups sub_Score;
}
Поэтому я пытаюсь создать идентификатор сопоставления для самостоятельного соединения с sub_score, но из-за устаревшего антидизайна базы данных вместо нуля пишется 0, если у Score нет sub_score. Загрузка данных через Hibernate дает:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
Поскольку Hibernate игнорирует только нулевые значения, а не 0 с @ NotFound.
Как заставить Hibernate игнорировать отображение внутренних объектов, если он находит 0 в "sub_score"?