2016-07-07 4 views
2

Скажем, у меня есть перечисление:Сохранение Enum Значения с JPA

public enum NotificationType { 

    Store("S"), 
    Employee("E"), 
    Department("D"), 
    All("A"); 

    public String value; 

    NotificationType(String value) { 
     this.value = value; 
    } 
} 

Я хочу, чтобы хранить S или E, а не Store или Employee в базе данных. В настоящее время я замэпил в объекте следующим образом:

@Enumerated(EnumType.STRING) 
private NotificationType notificationType; 

, но не знает, как получить то, что я хочу, если это возможно.

+2

Просто хочу отметить, что ваше перечисление изменено, рекомендуется делать поля enum 'final'. И рассмотрите объявление поля 'value' как' private' с 'public' getter. –

ответ

3

Вы можете объявить собственный тип пользователя, чтобы сделать преобразование между строками и перечисления вы можете узнать больше в этой статье:

http://javadata.blogspot.no/2011/07/hibernate-and-enum-handling.html

Одно маленькое замечание UserType является Hibernate специфичны. Если вы хотите использовать только JPA. Вам нужен конвертер атрибутов. Как это сделать, вы можете найти здесь:

http://www.thoughts-on-java.org/jpa-21-type-converter-better-way-to/

И еще одна ссылка на Stackoverflow работы с преобразователями Atribute показывает точное выполнение таких. Is it possible to write a generic enum converter for JPA?

+0

В итоге я использовал конвертер. – Gregg

+0

Отличный ответ приемлемый? –

Смежные вопросы