Неизвестное значение имени [] для перечисляемого класса с несколькими перечислениями - PullRequest
0 голосов
/ 16 февраля 2019

Dao Class:

@Entity
@Table( name = "test" )
public class Test {


@ManyToOne
@JoinColumn( name = "college_id", referencedColumnName = "id" )
private College college;  

@Enumerated( EnumType.STRING )
@Column( name = "gender", length = 500 )
private Gender gender;

@Enumerated( EnumType.STRING )
@Column( name = "section", length = 500 )
private Section section;
...
} 

public enum Gender {
  Male, Female;
}
public enum Section {
  A(0), B(1), C(2);
}

RepositoryClass:

List<Test> findByGender( Gender gender );
List<Test> findBySection( Section section );  

Если я вызываю findBySection (Section.A), он работает как положено.
Но если я вызываю findByGender(Gender.MALE), выдает ошибку:

InvalidDataAccessAPIUsageException: Unknown name value [] for enum class [com. .. .constants.Section]

Странная часть: если я звоню, findByCollegeAndGenderNot (College clg, Gender gen) работает.

1 Ответ

0 голосов
/ 16 февраля 2019

Я предполагаю, что у вас есть нулевые значения в разделе столбца в базе данных.

Столбец базы данных, который вы хотите отобразить в Enum Java, может быть не обнуляемым.

Так что выследует проверить это и добавить значение по умолчанию.

Кроме того, вы должны изменить аннотации столбцов на:

@Enumerated( EnumType.STRING )
@Column( name = "gender", length = 500, nullable = false )
private Gender gender;

@Enumerated( EnumType.STRING )
@Column( name = "section", length = 500, nullable = false )
private Section section;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...