单向关系查询

Unidirectional relation query

我有以下实体:

@Entity
@Table(name = "BOOKS")
public class Book {

@Id
private Long id;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "BOOK_ID")
private List<Page> pages = new ArrayList<>(); 
...
...
}

@Entity
@Table(name = "PAGES")
public class Page {

@Id
private Long id;

@Column(name = "COLOR", nullable = false)
private String color;

...
...
}

给定一个特定的页面,我想找出它所属的书(例如根据页面的颜色)。

在数据库中生成表后,使用 liquibase,我可以执行以下查询:

select * from Books where id in (select book_id from Pages where color = ?)

我正在使用 Spring 数据 (JpaRepository),但是当我尝试编写 JPQL 查询时,我发现我不能...因为关系是单向的(我不想要改变)。

我的问题是 - 如何编写此查询?

select distinct b from Book b
join b.pages p 
where p.color = :color