No vidíte to, to je tak, když člověk čte maily povrchně - toho Set<?
extends Enum> jsem si nevšimnul. To moje řešení je jen na jednotlivou
property - a řešení pomocí anotace @Enumerated je rozhodně elegantnější.
Buďto v té době nebylo, nebo jsem na něj při hledání řešení nenarazil.
Takže zpátky na stromy, všechno špatně :)
Omlouvám se za zavádějící cestu.
Novoj
Tomas Hubalek napsal(a):
Jo to dedeni je OK, s tim nemam problem. Dokonce bych rekl, ze pokud
se jedna o jednotlivou property tak muzu pouzit tu anotaci @Enumerated
a taky to funguje.
Ale nevsiml jsem si ve vasich prikladech toho, ze by to byla property
typu Set<? extends Enum>
Dik
Tom
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
*On Behalf Of *"Ing. Jan Novotný"
*Sent:* Thursday, February 01, 2007 2:38 PM
*To:* Java
*Subject:* Re: JPA a enum
No ono, to nakonec není tak hrozné. Děděné třídy z EnumUserType už
jsou směšně jednoduché. Toto jsem řešil v listopadu loňského roku, tak
kdo ví - třebas už zařadili do Hibernate větší podporu Enumeration.
Ono by bohatě stačilo, kdyby se ta třída EnumUserType dala vzít
odněkud od nich - takhle kopírovat celou třídu je hnus. Každopádně je
to řešení, které se doporučuje na fórech a je to funkční řešení - to
můžu potvrdit z vlastní zkušenosti :).
Novoj
Tomas Hubalek napsal(a):
No to je teda masicko :-/ Neco podobneho jsem nasel na hibernate.org,
ale nadsenim me to nenaplnuju.
Pokud nenajdu nic citelnejsiho, udelam ten enum jako normalni @Entity.
Tom
------------------------------------------------------------------------
*From:* [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
[mailto:[EMAIL PROTECTED] *On Behalf Of *"Ing. Jan Novotný"
*Sent:* Thursday, February 01, 2007 1:27 PM
*To:* Java
*Subject:* Re: JPA a enum
Ahoj,
netuším, jestli to standard JPA řeší nějak obecně, ale pro hibernate jsem musel provést následující věc. Je to poměrně častý problém řešený v několika diskusních threadech (link teď dohromady nedám, protože bych ho musel znovu hledat).
Přikládám zdrojáky mého modelu, kde jsou enumerace použity a řešení pro Hibernate ORM. Důležité jsou třídy:
Enum třídy: Gender a SkillLevel
Helper classy pro Hibernate:
EnumUserType<E extends Enum<E>>
GenderUserType extends EnumUserType<Gender>
SkillLevelUserType extends EnumUserType<SkillLevel>
které říkají Hibernate, jak se má k daným Enum hodnotám chovat při persistování a načítání. Vlastní definice v HBM XML je potom např. pro Goalkeepera, který používá Enumy takováto:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<class name="com.fgf.ot.model.Goalkeeper" table="GOALKEEPERS">
<id name="id" column="ID" type="java.lang.Long">
<generator class="native"/>
</id>
<property name="firstname"/>
<property name="surname"/>
<property name="age" type="java.lang.Integer"/>
<property name="gender" type="com.fgf.ot.model.GenderUserType"/>
<property name="catchSkill" type="com.fgf.ot.model.SkillLevelUserType"/>
<property name="perception" type="com.fgf.ot.model.SkillLevelUserType"/>
</class>
</hibernate-mapping>
Taky bych si to představoval jednodušší ;)
Novoj
--
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------
Tomas Hubalek napsal(a):
Zdar,
mam takovy dotaz. Chtel bych udelat JPA mapping (Hibernate, ale to
snad neni podstatne) nasledujicich trid a nevim, jak to oannotovat.
public enum Group { A, B, C}
@Entity
public class Person {
...
@?????
Set<Group> groups;
...
}
Pokud chci jenom jednu property, tak jde pouzit @Enumerated(), ale pro
Set to nefunguje.
Mate nekdo nejaky tip? Nebo mam obetovat enum a udelat si UserType.
Tom
!DSPAM:144,45c1ef1d52101336712104!