Невозможно запустить, чтобы существоватьByProperty: "Не найдено свойство студента для типа Студент!" - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь написать запрос "existBy", но не могу заставить его работать. Я знаю, что есть существующий идентификатор в JpaRepository, но мне нужно проверить его свойством student_id. Я пробовал бесчисленные способы написания имени функции, но я не могу сделать это правильно.

public class Student implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private long student_id;

+other fields and getters and setters...
@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {
    boolean existsByStudentid(Long student_id);
}

Ошибка:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property student found for type Student!

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Spring Data использует подчеркивание как зарезервированный символ. Я думаю, что это невозможно использовать таким образом. Я думаю, что нет другой возможности переименовать переменную.

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories .query-method.query-property-выражения

Таким образом, поле должно быть названо с следующее соглашение

private long studentId;

(Подчеркивание может использоваться для обхода вложенных свойств: чтобы устранить эту неоднозначность, вы можете использовать _ внутри имени вашего метода для определения точек обхода вручную.)

0 голосов
/ 06 апреля 2020

Имя вашего свойства: student_id

Таким образом, метод запроса должен быть

@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {
    boolean existsByStudent_id(Long student_id);
}

Кстати: _ в имени свойства не рекомендуется стиль в Java ожидать констант

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...