Задать вопрос
@yarushin_a

Spring + JPA как заставить работать запросы?

Добрый день. Не работают запросы. findAll срабатывает, кастомные запросы нет.

Application.properties:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.datasource.url=jdbc:mysql://localhost:3306/ticket_system
spring.datasource.driver-class-name=org.gjt.mm.mysql.Driver
spring.datasource.username=root


Репозиторий:
@Repository
public interface CitiesRepo extends CrudRepository<City, Integer> {
     List<City> findByName(String name);
}


Код вызова (Переменная text задана):
List<City> cities = citiesRepo.findByName(text);

Однако запрос не работает и при выводе видно что в конце не подставлена переменная text а cities пустой:
Hibernate: select city0_.id as id1_0_, city0_.latitude as latitude2_0_, city0_.longitude as longitud3_0_, city0_.name as name4_0_, city0_.region as region5_0_ from cities city0_ where city0_.name=?


Сущность:
@Entity
@Table(name = "cities")
public class City {
    @Id
    @SequenceGenerator(name="newRec", sequenceName="CITIES_SEQ",allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true,nullable = false)
    private Integer id;

    @Column(name = "name", length = 50,nullable = false)
    private String name;

    @Column(name = "region", length = 50,nullable = false)
    private String region;

    @Column(name = "latitude")
    private float latitude;

    @Column(name = "longitude")
    private float longitude;
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!

- Уточните какие именно библиотеки у вас подключены в pom.xml? В частности интересует библиотека spring data jpa
- Уточните есть ли у вас в классе City геттеры, сеттеры и конструктор без аргументов? Если нет, то добавьте их.
Если у вас подключен lombok, то можно прописать@Data @NoArgsConstructor
- Далее подключитесь к вашей БД и просмотрите записи в БД. Возможно, что они не сохраняются в UTF-8, потому и не находится город по названию. Вместо данных в таблице увидите крякозябры. Если эта проблема наблюдается, то пропишите
jdbc:mysql://localhost:3306/ticket_system?useUnicode=yes&characterEncoding=UTF-8

- Также обратите внимание на то создается ли у вас таблица cities.
Еще есть подозрение, что вы используете слово name, которое зарезервировано в mysql и из-за этого могут наблюдаться проблемы. Попробуйте экранировать его
@Column(name = "`name`", length = 50,nullable = false)

https://dev.mysql.com/doc/refman/8.0/en/keywords.html
https://stackoverflow.com/questions/2224503/how-to...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы