2011-02-03 2 views
0

Он хранит целое число в базе данных, а не строку, как я просил.Почему этот ретранслятор JPA не работает?

Вот класс, содержащий перечисление.

@Entity 
@Inheritance(strategy=InheritanceType.JOINED) 
public abstract class Document extends BaseModel { 

    private String title = new String(); 
    private String description = new String(); 

    **@Enumerated(EnumType.STRING) 
    private DocumentType documentType;** 

    @Embedded 
    private DocumentImage documentImage; 
    // if document should be displayed or published on the web site. 
    private Boolean published = new Boolean(false); 

    public Document(DocumentType docType) { 
     super(); 
     documentType = docType; 
     setDocumentImage(new DocumentImage()); 

    } 

} 

и вот класс перечисление:

public enum DocumentType { 
    policy,procedure,webbookmark,newsrelease,collectionLetter,whitepaper,busform, 
    newsarticle ; 
} 

Я знаю, что это должно работать. Есть идеи?

+0

Как вы говорите, должно хорошо работать. Прекрасно работает на других провайдерах JPA (например, DataNucleus) – DataNucleus

+1

Все выглядит нормально. - Правильно ли настроен ваш диалект, и является ли он перечисляемой аннотацией из правильного пакета? – Ralph

ответ

1

Одна из возможных причин состоит в том, что ваша аннотация @Enumerated не вступает в силу, поскольку аннотации в BaseModel размещаются на свойствах, а не на полях. Размещение аннотаций по полям или свойствам должно быть согласованным по иерархии наследования.

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