Как я могу сказать Hibernate игнорировать "0" при самостоятельном присоединении @OneToOne - PullRequest
1 голос
/ 08 мая 2019

Я пишу новое приложение, которое использует старую базу данных.
У меня есть таблица с именем "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"?

1 Ответ

1 голос
/ 08 мая 2019

Попробуйте это

@JoinColumn(name = "haupt_kondition_id")
@Where(clause = "sub_score <> 0")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...