如何在 @OneToMany 关系映射的列上使用 JPA findBy 查询?
Posted
技术标签:
【中文标题】如何在 @OneToMany 关系映射的列上使用 JPA findBy 查询?【英文标题】:How to use JPA findBy query on column mapped by @OneToMany relationship? 【发布时间】:2022-01-20 08:11:41 【问题描述】:如何使用 jpa 查询从具有@OneToMany 关系的列中查找记录?
Post.class
public class Post
@Id
private String id;
...
...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "comment", fetch = FetchType.LAZY)
private Set<Comment> comments;
评论类
public class Comment
...
...
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "comment", referencedColumnName = "id")
private Post post;
有什么方法可以查询PostRepository
并使用commentId 找到Post
?
【问题讨论】:
【参考方案1】:要通过 commentId 查找,您只需在存储库界面中创建一个函数:
List<Comment> findByPost(Post post);
然后在查询时添加:
Post post = new Post();
post.setId(yourId);
repository.findByPost(post);
【讨论】:
【参考方案2】:假设Comment
具有String id
属性,您可以这样做:
public interface PostRepository extends JpaRepository<Post, String>
List<Post> findByCommentsId(String id);
您可以在以下位置阅读更多相关信息:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation【讨论】:
以上是关于如何在 @OneToMany 关系映射的列上使用 JPA findBy 查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确映射@OneToMany 和@ManyToOne 关系,以便我可以保存和更新@OneToMany 端(有或没有@ManyToOne 端)
Hibernate:映射@OneToMany 关系的最后一行