Spring数据从父级加载所有延迟初始化的子表

时间:2016-12-19 07:43:16

标签: spring spring-boot spring-data spring-data-jpa

我有一个父实体,其中包含2个延迟加载的子实体。我想在加载父实体时加载所有关联的子实体

@Entity
public class Author {
   @Id
    @GeneratedValue
    private Long id;
    private String firstName;
    private String lastName;

    @OneToMany(mappedBy ="author",cascade= CascadeType.ALL,fetch=FetchType.LAZY)
    private List<Post> posts;

    @OneToMany(mappedBy ="author",cascade= CascadeType.ALL,fetch=FetchType.LAZY)
    private List<Book> books;
 }

使用动态查询基于作者名字加载所有书籍和帖子。

    public interface AuthorRepository extends CrudRepository<Author, Long> {
       public  List<Author>findByFirstNameAndPostsAndBooks()
    }

以上Findby不起作用,请帮我构建正确的查询。 我也试图暂时避免使用@Query或QueryDSL

1 个答案:

答案 0 :(得分:1)

要通过名字获取作者,您应该将查询更改为:

public List<Author>findByFirstName(String firstname);
由于JPA课程中的posts注释,

books会自动加载作者@OneToManyAuthor

spring.jpa.properties.hibernate.enable_lazy_load_no_trans=tr‌​ue添加到application.properties文件中,以启用延迟加载而不进行事务性注释。