gpt4 book ai didi

java - 用于单向 OneToMany 的 JPQL

转载 作者:搜寻专家 更新时间:2023-10-31 20:19:11 26 4
gpt4 key购买 nike

我的 Spring 存储库接口(interface)方法需要一个 jpql 查询,以检索给定学期的所有帖子。

@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade = CascadeType.MERGE)
@JoinTable
(
name = "semester_post",
joinColumns = {@JoinColumn(name = "semester_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "post_id", referencedColumnName = "id", unique = true)}
)
private List<PostEntity<?>> posts = new ArrayList<>();

PostEntity 没有对 Semester 的引用,我不想添加一个,因为我计划将此 PostEntity 用于 Semester 之外的其他用途。也许我会有另一个类(class)(假设是 Group),它也将有一个 OneToMany of PostEntity(就像学期中的类(class))

那么,如何将此 SQL 查询编写为 JPQL 查询?

select * from posts join semester_post on semester_post.post_id = posts.id where semester_post.semester_id = 1;

我的仓库

public interface PostRepository extends JpaRepository<PostEntity, Long> {

String QUERY = "SELECT p FROM PostEntity p ... where semester = :semesterId";

@Query(MY_QUERY)
public List<PostEntity> findBySemesterOrderByModifiedDateDesc(@Param("semesterId") Long semesterId);

最佳答案

将为您提供所需结果的查询是:

SELECT p FROM SemesterEntity s JOIN s.posts p WHERE s.id = :semesterId

此查询使用 JOIN 运算符通过 posts 关系将 SemesterEntity 连接到 PostEntity。通过将两个实体连接在一起,此查询返回与相关 SemesterEntity 关联的所有 PostEntity 实例。

关于java - 用于单向 OneToMany 的 JPQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com