Spring-data-jpa lazy init 问题,有什么优雅的解决方案吗?

@Entity
public class Blog {
    @Id
    @GeneratedValue
    private Long Id;

    private String title;

    private String Content;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @OneToMany(mappedBy = "blog")
    private List<Comment> comments;
    
    

    @Query("SELECT u FROM User u " +
            "JOIN FETCH u.blogs b " +
            "JOIN FETCH u.comments c " +
            "WHERE u.id = (:id)")
    public User findByIdAndFetchBlogsAndCommentsEagerly(@Param("id") Long id);
我的需求是取某个用户的blogs和comments,要取回实际内容,不适用Open Session in view

我想用join fetch 但是产生了.Hibernate cannot simultaneously fetch multiple bags.但是评论和博客应该是有顺序的,比如时间顺序,我也不能改成Set.

或者有没有办法让blogRepository.findByUser()返回实际内容,而不是proxy.
阅读 3.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进