Я пытаюсь использовать проекцию базового интерфейса с помощью JPA с названием методов и добавить спецификацию, я прочитал проблему GitHub, и там мод указал, что с пружины данные JPA 3 мы можем использовать проекцию и спецификацию динамически.
Я попробовал разные способы, но в итоге провалился < /p>
public interface UserRepository extends JpaRepository, JpaSpecificationExecutor {
User findUserByUserNameIgnoreCase(String username);
T findById(Long id, Class type); //works
List findAllBy(Class type); //works
List findAllBy(Specification specification, Class type); //failed
List findAllBy(Specification specification); // failed
interface Specs {
static Specification id(Long id) {
return (root, query, builder) -> builder.equal(root.get("id"), id);
}
}
}
< /code>
Вызов метода < /p>
List up = userRepository.findAllBy(UserRepository.Specs.id(userID));
List pp = userRepository.findAllBy(UserRepository.Specs.id(userID), UserInfoProjection.class);
< /code>
Журнал ошибок < /p>
Caused by: java.lang.IllegalArgumentException: At least 1 parameter(s) provided but only 0 parameter(s) present in query
Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List org.backend.user.repository.interfaces.UserRepository.findAllBy(org.springframework.data.jpa.domain.Specification); At least 1 parameter(s) provided but only 0 parameter(s) present in query
Подробнее здесь: https://stackoverflow.com/questions/794 ... fluent-api