hibernate lazyloading列表初始化

mxg2im7a  于 2021-07-29  发布在  Java
关注(0)|答案(0)|浏览(163)

我有典型的用户和评论模型。一个用户有更多评论。在一个用例中,我只想从db中获得一个用户,不需要注解。我想,只要我告诉“getcomments()”,那么只有在这一刻,我的列表才会初始化为类似hibernate中的“selectcommentfromcomentc wherec.userid=1”。但每当我说findybyid或“selectuserfromsuser”时,我的评论列表就会被初始化。

@Entity
@Getter @Setter
@ToString(exclude = {"comments") 
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Builder.Default
    @OneToMany(mappedBy="user", fetch = FetchType.LAZY)
    private List<Comment> comments = new ArrayList<>();

}

我的评论模式:

@Entity
@Getter @Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Comment implements Serializable{

   @Id
   @GeneratedValue(strategy=GenerationType.IDENTITY)
   private Long id;

   @Builder.Default
   @ManyToOne(fetch = FetchType.LAZY)
   private User user; }

用户存储库:

public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT user FROM User user WHERE user.id =:id")
Optional<User> findUserById(@Param("id") long id); }

当我说:

userRepository.findUserById(1);

所以我看到一开始只有一个select语句供用户使用。几秒钟后,我看到了下一个注解语句,但我没有告诉“user.getcomments()”,所以我如何才能在没有任何相关对象的惰性列表的情况下获得用户模型?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题