我遇到的问题是在Spring Boot v1.5.3应用程序中通过JPA实体框架从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 | 名称
0个名字Validation_Field_Message
id | validation_message_id | validation_field_id
0 0 0
1 1 0
2 2 0Validation_Message
id | 文本
0“不应有空格”
1“不允许使用特殊字符”
但是执行的结果如下:
field {
id:0,
名称:名字,
消息:{
[
id:0,
validationMessage:[
id:1,
文字:“不允许使用特殊字符”
],[
id:1,
文字:“不允许使用特殊字符”
]
]
}
}
消息是重复的,而不是单独列出。 我也尝试过使用联接使用@Query,但没有成功。
模型定义中是否缺少某些内容?