我想避免“双向@OneToMany
“关联,原因如下:
1.它不能限制@OneToMany
的大小
1.我需要做分页。
为此,我使用了this tutorial,它描述了“Just @ManyToOne
“关联,但不幸的是,它只给出了一行与此相关的代码:
List<PostComment> comments = entityManager.createQuery(
"select pc " +
"from PostComment pc " +
"where pc.post.id = :postId", PostComment.class)
.setParameter( "postId", 1L )
.getResultList();
所以,我有许多疑问:
1.我应该在哪里使用这条线?
1.我应该如何以及在哪里获得EntityManager?确切地说是在实体中?这是一个好的解决方案吗?
1.我如何避免使用EntityManager
?我已经看过this和其他问题,但不幸的是,它们对我没有帮助。
1.我有Post
作为父实体,Comment
作为子实体。一个帖子可以有很多评论。代码:
如果我在Comment
中使用此函数:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
在Post
中:
private Set<Comment> comments;
所以,我删除了@OneToMany
作为上述教程说,我得到:
MappingException: Could not determine type for: java.util.List, at table: post, for columns: [org.hibernate.mapping.Column(comments)]
那么,如何使用“Just @ManyToOne
“关联(或其他方便的关联)来控制comments
的大小和分页呢?
2条答案
按热度按时间1tu0hz3e1#
我找到了不完美,但对我来说最正确的解决办法。
职务:
发表评论:
后期注解服务实现:
控制器:
mjqavswn2#
您可以通过使用
Spring data
的JpaRepository
来避免使用EntityManager。JpaRepository
附带了内置的方法Page<T> findAll(Pageable pageable)
,您可以使用该方法进行分页。您可以阅读以下文章来开始使用:https://www.baeldung.com/spring-data-repositories祝你好运!
编辑:另外,关于第4点:
这里你基本上是说一个评论可以有很多帖子,而不是相反(一个帖子可以有很多评论)。