У меня возникли проблемы с получением SPEL и Spring JPA данные для работыВесна данных JPA SPEL - @Query выпуск
Ниже Мой Repository
package eg.repository;
public interface MyEntityRepository extends JpaRepository<MyEntity, Long>,JpaSpecificationExecutor<MyEntity> {
@Query("SELECT e FROM eg.domain.MyEntity e " +
"WHERE e.title = :#{#filter.title}"
)
Page<MyEntity> list1(@Param("filter") MyFilter filter,Pageable pageable);
}
Фильтр Компонент
package eg.service;
import org.springframework.stereotype.Component;
@Component("filter")
public class MyFilter {
public String titleFilter() {
return "%title%";
}
private String title = "title title1";
public Long[] idFilter() {
return new Long[] {
1L, 2L
};
}
}
Следующий MyEntity
package eg.domain;
@Entity
public class MyEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "title")
private String title;
......
}
Главный класс
LOG.info("Application initialized " + annotationConfigApplicationContext);
MyEntityRepository myEntityRepository =
(MyEntityRepository) annotationConfigApplicationContext.getBean(MyEntityRepository.class);
MyFilter filter = annotationConfigApplicationContext.getBean(MyFilter.class);
PageRequest pageRequest = new PageRequest(0, 5);
Page<MyEntity> page = myEntityRepository.list1(filter,pageRequest);
List<MyEntity> entities= page.getContent();
for(MyEntity entity: entities){
System.out.println(entity.getId() + " TITLE " + entity.getTitle());
}
Ниже ошибка, что я получаю
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myEntityRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Using named parameters for method public abstract org.springframework.data.domain.Page eg.repository.MyEntityRepository.list1(eg.service.MyFilter,org.springframework.data.domain.Pageable) but parameter 'filter' not found in annotated query 'SELECT e FROM eg.domain.MyEntity e WHERE e.title = :#{#filter.title}'!
Почему вы не просто указываете заголовок как параметр, а не как '@Query (" SELECT e FROM eg.domain.MyEntity e WHERE e.title =: filter ")'? –
Я просто пытаюсь заставить Spel работать с данными весны. Как только это работает, я планирую добавить более сложные вещи, как это можно увидеть в методах idFilter() и т. Д. – ArunM
Я также не могу получить простое выражение # {# variable}. – RedDeckWins