使用findAll()
注释Spring Data JPA存储库方法@EntityGraph
:
import org.springframework.data.jpa.repository.JpaRepository;
[...]
public interface OptgrpRepository extends JpaRepository<Optgrp> {
@EntityGraph(value = "Optgrp.sysoptions")
List<Optgrp> findAll();
}
导致此错误消息:
org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type Optgrp!
将
findAll()
更改为其他名称时,也会发生相同的错误:findAllWithDetail()
-> No property findAllWithDetail found for type Optgrp!
findWithDetailAll()
-> No property findWithDetailAll found for type Optgrp!
问题:可以在查找所有实体的Spring Data JPA存储库方法上使用
@EntityGraph
注释吗?编辑:按照评论中的要求,这是
Optgrp
实体类的摘录:@Entity
@NamedEntityGraph(name = "Optgrp.sysoptions", attributeNodes = @NamedAttributeNode("sysoptions"))
public class Optgrp implements Serializable {
[...]
@OneToMany(mappedBy="optgrp", cascade = CascadeType.ALL, orphanRemoval=true)
@OrderBy(clause = "ordnr ASC")
private List<Sysoption> sysoptions = new ArrayList<>();
}
还有
Sysoption
实体类:@Entity
public class Sysoption implements Serializable {
[...]
@ManyToOne
@JoinColumn(name = "optgrp_id", insertable=false, updatable=false)
private Optgrp optgrp;
}
最佳答案
对于所有人也将Stack Overflow用作知识数据库的所有人,我记录了Markus Pscheidts挑战的新状态。三年零六个月后,@EntityGraph
批注现在可以直接在Spring Data findAll()
中的JpaRepository
函数上工作,这是Markus最初的期望。
@Repository
public interface ImportMovieDAO extends JpaRepository<ImportMovie, Long> {
@NotNull
@Override
@EntityGraph(value = "graph.ImportMovie.videoPaths")
List<ImportMovie> findAll();
}
测试中使用的版本:Spring Boot 2.0.3.RELEASE,其中包含spring-boot-starter-data-jpa。
关于spring-data-jpa - 如何将@EntityGraph批注分配给Spring Data JPA存储库.findAll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824687/