Я работаю над Spring Data JPA, и у меня есть интерфейс репозитория, который реализует JpaRepository.Spring Data JPA @Query с spel в запросе IN
Я уже написал этот запрос, который работает отлично:
@Query ("FROM Person p " +
"LEFT JOIN p.relatedContractRoleAttributions rcras " +
"WHERE rcras.contract.id = :#{#contract.id} " +
"AND rcras.relatedContractRole.code = :#{#code}")
Person findByContractAndRelatedContractRole(@Param ("contract") Contract contract, @Param ("code") String code);
Теперь я хочу написать еще один запрос, который можно найти в более чем один код, так что я написал этот вопрос:
@Query ("FROM Person p " +
"LEFT JOIN p.relatedContractRoleAttributions rcras " +
"WHERE rcras.contract.id = :#{#contract.id} " +
"AND rcras.relatedContractRole.code IN (:#{#codes})")
List<Person> findByContractAndRelatedContractRoles(@Param ("contract") Contract contract, @Param ("codes") String... codes);
Но при запуске приложения у меня есть эта ошибка:
Caused by: org.hibernate.QueryException: unexpected char: '#' [FROM com.krgcorporate.core.domain.access.Person p LEFT JOIN p.relatedContractRoleAttributions rcras WHERE rcras.contract.id = :#{#contract.id} AND rcras.relatedContractRole.code IN (:__$synthetic$__2)]
У вас есть идеи, почему?
Благодарим за помощь.
Я пробовал без кронштейна, и у меня такая же ошибка. С другой стороны, вы можете перейти к документации. 3.3.6. Использование выражений SpEL здесь: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ –
@Franck Yapadesouci Anso: Do вы используете JPA? – Ralph
Разрешения @Ralph 'Spel' разрешены. Проверьте https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions и http://docs.spring.io/spring-data/jpa/docs. /current/reference/html/#jpa.query.spel-expressions – geoand