簡體   English   中英

Spring數據CrudRepository findBy關系

[英]Spring data CrudRepository findBy relationships

我要選擇所有狀態為新的酒吧的所有Foo實體。

這是我嘗試過的:

@Entity
@Table(name = "FOO")
class Foo {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    @OneToMany
    private Set<Bar> bars;

   //...
}



public interface FooRepository extends CrudRepository<Foo, Long> {


    @Query("select m from Foo f where f.bars.status = 'NEW' ")
    public Page<Foo> findByBarStatus(Pageable pageable);

}

但是我得到:

org.hibernate.exception.SQLGrammarException: could not prepare statement

我還嘗試編寫連接語句:

select f from Foo f inner join f.bars b where b.status = 'NEW'
SELECT f FROM Foo AS f JOIN f.bars AS b WHERE b.status = 'NEW'

我想你錯過了這樣的事情

@OneToMany(mappedBy = "foo")
private Set<Bar> bars;

加入一對多關系有時會很棘手。 (還有一個正確的答案,您可以參考)

在這種情況下,可以通過從“ Bar側向上查找來反向進行操作(假設您具有雙向關系):

select bar.foo from Bar bar where bar.status = 'NEW'

暫無
暫無

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

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