【发布时间】:2016-10-07 13:18:36
【问题描述】:
我有以下实体:
@Entity
@NamedEntityGraph(name = "Text.WithRows", attributeNodes = { @NamedAttributeNode("rows") })
public class Text {
@Id
@Column(name = "uuid", nullable = false, unique = true)
UUID uuid;
@Column(name = "belongsTo")
UUID belongsTo;
@OneToMany
@JoinColumn(name = "text_id")
List<TextRow> rows;
}
@Entity
public class TextRow {
@Id
@Column(name = "uuid", nullable = false, unique = true)
private UUID uuid;
@Column(name = "content", nullable = false, length = 255)
private String content;
}
我还有一个 Spring Data JPA 存储库,定义如下:
public interface TextRepository extends PagingAndSortingRepository<Text, UUID>, JpaSpecificationExecutor<Text> {
@EntityGraph(value = "Text.WithRows", type = EntityGraphType.LOAD)
List<Text> findAllByBelongsTo(UUID belongsTo)
}
当我从存储库执行 find-Method 时,我希望快速加载 TextRows。因此我在上面的代码中引入了 NamedEntityGraph- 和 EntityGraph-annotations。
我的数据库的文本表中有 2 个条目,每个文本行表中有 3 个条目。
我希望 findAllByBelongsTo 方法返回一个包含两个文本实例的列表。相反,它返回一个包含 6 个文本实例的列表。
我不明白为什么会这样。有人可以给我一些指导或解决方案吗?
谢谢!
【问题讨论】: