Nepomohlo by  toto?
query.setParameter("folder",FolderEnum.SPAM.ordinal());

Filip Jirsák

2005/11/8, Ondřej Fafejta KYBERIE <[EMAIL PROTECTED]>:
> 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
>


--
Filip Jirsák
[EMAIL PROTECTED]

Odpovedet emailem