簡體   English   中英

單向OneToMany的JPQL

[英]JPQL for a Unidirectional OneToMany

我需要一個針對Spring存儲庫接口方法的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用於其他事情而不是學期。 也許我會有另一個班級(比如說Group)也會有一個PostTntMany的OneToMany(就像學期一樣)

那么,我如何將這個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實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM