【问题标题】:Unidirectional relation query单向关系查询
【发布时间】:2016-04-05 10:00:56
【问题描述】:

我有以下实体:

@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 Data (JpaRepository),但是当我尝试编写 JPQL 查询时,我发现我不能......因为关系是单向的(我不想更改)。

我的问题是 - 我该如何编写这个查询?

【问题讨论】:

    标签: java jpa orm spring-data jpql


    【解决方案1】:
    select distinct b from Book b
    join b.pages p 
    where p.color = :color
    

    【讨论】:

    • 谢谢!这确实解决了这个问题 - 我已经接受了这个答案,而不是另一个,因为它是第一次发布的......
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多