Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Enumeration als Datentyp für Felder
PostPosted: Mon May 30, 2011 11:47 am 
Newbie

Joined: Sat May 21, 2011 7:40 am
Posts: 15
Hallo!

Ich würde gerne eine Enum als Datentyp für ein Feld verwenden und bin da auf einige Ansätze im Internet gestoßen.
Der weg über annotations kommt für mich nicht in frage, also bleibt nur mehr der über xml.
Ich habe eine Klasse GenericEnumUserType welche ansich funktionieren sollte, hab sie von: http://community.jboss.org/wiki/Java5EnumUserType
Auf jeden Fall habe ich jetzt in einer xml datei einen eintrag der sieht wie folgt aus:

<typedef name="permission" class="model.enums.GenericEnumUserType">
<param name="enumClassName">model.enums.PermissionEnum</param>
</typedef>

<class...
<property name="permission" type="permission">
<column name="permission"/>
</property>
...

Jetzt frag ich mich zunächst warum nach hbm2java das Feld den Datentyp GenericEnumUserType hat?
Das nächste ist, hbm2java kriegt diese typedef sache nicht hin wenn der eintrag nicht in der xml ist, in welcher der typ verwendet wird.
Sprich, wenn ich ein externes file für meine enum typen habe, dann ist der datentyp "permission", also wird da gar nichts aufgelöst.
Was kann ich jetzt machen um:
1. externe typedef definitionen machen zu können
2. meinen eigenen typ bei den generierten klassen zu sehen

Danke schon im vorhinein!


Top
 Profile  
 
 Post subject: Re: Enumeration als Datentyp für Felder
PostPosted: Tue Jul 26, 2011 12:12 pm 
Newbie

Joined: Mon Jan 31, 2011 3:23 pm
Posts: 5
Ich weiß nicht, was sich hbm2java dabei denkt. Vielleicht ist es einfach nur schlecht gepflegt. Man braucht in den aktuellen Hibernate Vesionen überhaupt keinen UserType mehr, um Enums auf VARCHAR zu mappen. Ein Mapping einer enum auf VARCHAR sieht so aus:
Code:
<property name="permission" length="<Länge_des_längsten_Namens_Deiner_Enum-Konstanten">
  <type name="org.hibernate.type.EnumType">
    <param name="enumClass">model.enums.PermissionEnum</param>
    <param name="type">12</param>
  </type>
</property>

Was etwas komisch aussieht, ist die hart codierte 12. Dies ist eine Konstante aus java.sql.Types und zeigt an, dass der Spalenttyp VARCHAR ist.

_________________
http://www.winfonet.eu


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.