Не могу заставить мой sql-запрос с помощью jpa и cruderepository работать, но работает по обычной схеме

#java #mysql #spring-data-jpa

#java #mysql #spring-data-jpa

Вопрос:

Я здесь новичок, я уже целую ночь борюсь с этим запросом, кто-нибудь мне поможет?

вот соответствующий код: https://hasteb.in/esuhiluf.java

Когда я сделал чистый SQL-запрос в схеме, подобной этой https://hasteb.in/icopuxiq.sql это сработало, но когда я добавляю его в интерфейс и меняю имена переменных на заглавные буквы, я не могу заставить его работать, любая помощь была бы очень признательна: smile: вот код ошибки: Ошибка создания компонента с именем’productRepositories’: FactoryBean вызвал исключение при создании объекта; вложенное исключение

 java.lang.IllegalArgumentException: Validation failed for the query for method public abstract java.util.List dev.rannem.storesql.repositories.ProductRepositories.getItemList(java.lang.Integer)!
  

Комментарии:

1. Пожалуйста, опубликуйте код в вопросе, чтобы он был там для потомков. Также потому, что мы вряд ли будем переходить по ссылкам, предоставленным неизвестными людьми на неизвестные сайты.

Ответ №1:

Во-первых: проверьте, подходит ли CrudRepository для того, что вы пытаетесь сделать. Я начал с CrudRepository и переключился на JpaRepository, который расширяет CrudRepository.

Второе: я предполагаю, что ваши атрибуты tableattributes взяты из правильных таблиц — ваш SQL-запрос не соответствует вашей строке @Query.

Последнее: попробуйте изменить свой способ получения идентификатора.

 public interface ProductRepositories extends JPARepository<Product, Integer> {

@Query("select CartItem.product from Cart c join CartItem ci on ci.id = c.cartID join Cart.cartItems cci on c.cartID = cci.product.id where User.id = :id")
    List<Product> getItemList(Integer id);
}
  

Редактировать: ваш идентификатор действительно является целым числом? Проверьте свой продукт — он может быть «длинным»

Комментарии:

1. ProductID — это целое число, просто проверил дважды, попробовал ваше решение, и, к сожалению, я все еще получаю ошибку.