Zdravím konferenci!

Mám tento výčtový typ:

public enum FolderEnum {
    INBOX, SENT, TRASH, SPAM
}

Dále mám entitu EmailMessage, která obsahuje položku FolderEnum.
Do databáze se výčtový typ mapuje jako int.
Pokud načtu celý email, tak automaticky se mi převede int na FolderEnum.

Vše fungovalo výborně až do té doby, kdy jsem potřeboval vyhledat
všechny SPAMY.

Query query = em.createQuery("SELECT em FROM EmailMessage em WHERE
em.folder=:folder");
query.setParameter("folder",FolderEnum.SPAM);
List<EmailMessage> emails=query.getResultList();

Při metodě setParametr se již nepřevádí FolderEnum.SPAM na int, ale na
BYTEA.
Vyhazuje mi to chybu:
java.sql.SQLException: ERROR: operator does not exist: integer = bytea

Jediné co funguje je toto:
query.setParameter("folder",3);

Musel bych tedy převádět FolderEnum.SPAM na int ručně, což se mi vůbec
nelíbí. (resp. udělat převodní tabulku).
Jiná možnost je místo enum používat konstanty, ale to se mi také nechce
- myslím si, že enum je elegantnější.
Zavádět číselník není potřeba, protože více položek nikdy nebude.

Setkal jste se s tím někdo?
A pokud ano, jak jste to vyřešili?

Díky
Fafi

Odpovedet emailem