繁体   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