У меня есть существующая база данных, с которой я сейчас подключаюсь к использованию спящего режима. В настоящий момент я не могу изменить данные, и все они работают отдельно от одного столбца.Отображение спящего режима Hibernate с использованием аннотаций
У меня есть столбец статуса, который имеет следующие значения:
- новый
- рассылаемые
- в
- из
И колонка отображенные следующим образом:
@Column(name = "STATUS", nullable = false, length = 50)
@Enumerated(EnumType.STRING)
private TeamMemberStatus status;
Я бы ДЕЙСТВИТЕЛЬНО хотел (по причинам применения), чтобы этот столбец был отображен как Java Enum (TeamMemberStatus), , но из-за того, что «новое» является ключевым словом в Java Я не могу иметь это как член перечисления.
Если у меня есть континуальные континуумы NEW, MAILED, IN и OUT hibernate завершается с ошибкой, так как внутри EnumType он имеет значение Enum.valueOf().
Есть ли способ сопоставить это с моим Enum без необходимости писать сложный UserType?
- добавил содержание
Мои Enum, как это:
public enum TeamMemberStatus {
NEW, MAILED, IN, OUT
}
является допустимым Java перечисление, но не соответствующий случай базы данных. Если бы я изменить его в соответствии с базой данных, как:
public enum TeamMemberStatus {
new, mailed, in, out
}
Это не будет компилироваться как «новые» является Java зарезервированного слова.
Я предполагаю, что вы хотите изменить данные в базе данных? Что-то вроде обновления TABLE set status = upper (status). Я не могу этого сделать, так как он нарушит существующие приложения, которые говорят с этими данными, ожидая его как строчного значения. – stevemac
@stevemac Обновлено –
Это то, что я разработал в конце, базовое хранение строки внутри и отображение ее из/в перечисление при вызове get/set. Это нужно сделать в краткосрочной перспективе, пока я не смогу обновить все приложения, чтобы использовать прописные константы. – stevemac