У меня проблема с запросом данных из цепочки из 3 таблиц через инфраструктуру сущностей JPA в приложении Spring Boot v1.5.3.Модели определены следующим образом:
ValidationField {
@Id id,
name,
@OneToMany(
orphanRemoval = true,
fetch = FetchType.EAGER,
cascade = CascadeType.ALL,
mappedBy = "validationMessage")
Set<ValidationFieldMessage> messages
}
ValidationFieldMessage {
@Id id,
@ManyToOne(fetch = FetchType.LAZY)
ValidationField validationField
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "validation_message_id")
ValidationMessage validationMessage;
}
ValidationMessage {
@Id id,
text
}
Метод хранилища данных Spring определен следующим образом:
List<ValidationField> findByName(String name);
Пример данных:
Validation_Field
id | name
0 first_name
Validation_Field_Message
id | validation_message_id | validation_field_id
0 0 0
1 1 0
2 2 0
Validation_Message
id | text
0 "Не должно быть пробелов"
1 "Специальные символы не допускаются" *
Однако результат выполнения дает следующее:
field {
id: 0,
name: first_name,
messages: {
[
id: 0,
validationMessage: [
id: 1,
текст: «Специальные символы не допускаются»
], [
id: 1,
текст: «Специальные символы не допускаются»
]
]
}
}
Сообщения дублируются, а не отображаются по отдельности.Я пытался с @Query также использовать объединения, но безуспешно.
Есть ли что-то, чего мне не хватает в определении модели?