如何通过另一个对象的字段

时间:2017-12-02 06:06:42

标签: spring spring-data-jpa

我有一个2实体 - Klient DocAcc 。为了访问我的数据,我使用Spring Data。这是我的存储库:

public interface DocAccRepository extends CrudRepository<DocAcc, Long> {
    @Query("select d from DocAcc d where d.sals = klient.sals")
    List<DocAcc> findByKlient(Klient klient);
}

这段代码没有用。错误:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'klient.sals' [select d from vap.entity.DocAcc d where d.sals = klient.sals]

我的实体连接了多个字段。如何访问Query中的对象参数?

1 个答案:

答案 0 :(得分:2)

您可以在@Query

中使用SpEL表达式
public interface DocAccRepository extends CrudRepository<DocAcc, Long> {
    @Query("select d from DocAcc d where d.sals = :#{#klient.sals}")
    List<DocAcc> findByKlient(@Param("klient") Klient klient);
}

此处有更多信息:https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions