我有一个父实体,其中包含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
答案 0 :(得分:1)
要通过名字获取作者,您应该将查询更改为:
public List<Author>findByFirstName(String firstname);
由于JPA
课程中的posts
注释, books
会自动加载作者@OneToMany
和Author
。
将spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
添加到application.properties
文件中,以启用延迟加载而不进行事务性注释。