Параметр enum не возвращает значения из базы данных - PullRequest
0 голосов
/ 22 мая 2019

У меня есть некоторые данные в моем проекте, которые требуют ENUM, поэтому я решил реализовать это. Проблема в том, что я не получаю данные из базы данных. Должна быть какая-то конфигурация, которую я пропускаю, и я не могу понять это. Вот несколько примеров кода

Repository:

 @Query(value="SELECT student_account_table.* FROM student_account student_account_table INNER JOIN student student_table ON student_account_table.student_account_id = studdent_table.student.id WHERE student_table.grade= :studentGrade", nativeQuery=true)
 List<StudentAccount> getStudentAccounts(@Param("studentGrade") StudentGrades studentGrade);

StudentAccounImplementation:

@Override
    public List<StudentAccount> getStudentAccounts(StudentGrades studentGrade) {
        return studentAccountRepository.getStudentAccounts(studentGrade);
    }

Вызов метода:

    public void eraseStudent(){
            List<StudentAccount> eraseThis= studentAccountImplementation.getStudentAccounts(StudentGrades.E);    

 //This method doesn't work because the list is empty        
            studentAccountImplementation.eraseStudents(eraseThis);
        }

Enum:

public enum StudentGrades{
    A, B, C, D, E;
}

Entity

@Column(name = "student_grade")
    @Enumerated(EnumType.STRING)
    private StudentGrades studentGrade;

Конструктор и другой код отсутствуют для краткости. Я попробовал все возможные решения, найденные здесь, в SO и могущественном Google, но безуспешно. Может кто-нибудь мне помочь? Заранее спасибо.

1 Ответ

0 голосов
/ 22 мая 2019

Нашли решение путем преобразования значений Enum в строку. Это было это.

Исправление:

 public void eraseStudent(){
            List<StudentAccount> eraseThis= studentAccountImplementation.getStudentAccounts(StudentGrades.E.toString());    

 //This method doesn't work because the list is empty        
            studentAccountImplementation.eraseStudents(eraseThis);
        }

Надеюсь, ответ кому-нибудь поможет.

...