una todos tabla recorrer query obtener los listar lista datos create con clase java hibernate dao

todos - query hibernate java



Enumeraciones en Hibernate (2)

De la documentación de Hibernate: http://www.hibernate.org/272.html

Puede crear un nuevo typedef para cada una de sus enums y hacer referencia a los typedefs en la etiqueta de propiedad.

Mapeo de ejemplo - etiqueta <type> línea

<property name=''suit''> <type name="EnumUserType"> <param name="enumClassName">com.company.project.Suit</param> </type> </property>

Mapeo de ejemplo - usando <typedef>

<typedef name="suit" class=''EnumUserType''> <param name="enumClassName">com.company.project.Suit</param> </typedef> <class ...> <property name=''suit'' type=''suit''/> </class>

A menudo es útil tener un campo en un DAO cuyo valor proviene de una enumeración de Java. Un ejemplo típico es un DAO de inicio de sesión donde generalmente tiene un campo que caracteriza al usuario como "NORMAL" o "ADMIN". En Hibernate, usaría los siguientes 2 objetos para representar esta relación de una manera segura (semi) a la de tipo:

class User { String username; String passwd; UserType type; } class UserType { private enum Type {ADMIN, NORMAL}; private String type; //Setters/Getters for Hibernate public void setType(String type); public String getType(); //Setters/Getters for user public void setUserType(UserType.Type t); public UserType.Type getUserType(); public static UserType fromType(UserType.Type t); }

Esto funciona, pero creo que la clase UserType es desagradable y requiere demasiada burocracia solo para almacenar un par de valores. Idealmente, Hibernate debería admitir campos enum directamente y crearía una tabla adicional para almacenar los valores de enumeración.

Mi pregunta es: ¿hay alguna manera de asignar directamente una clase de enumeración en Hibernate? Si no, ¿es mi patrón para representar las enumeraciones lo suficientemente bueno o me falta algo? ¿Qué otros patrones usa la gente?


usando hibernación o anotaciones JPA:

class User { @Enumerated(EnumType.STRING) UserType type }

UserType es solo una enumeración estándar de Java 5.

No me puedo imaginar que esto se limite solo a las anotaciones, pero en realidad no sé cómo hacerlo con archivos hbm. Puede ser muy dependiente de la versión, supongo, pero estoy bastante seguro de que se requiere Hibernate 3.2+.

editar: es posible en un hbm, pero es un poco desordenado, eche un vistazo a este hilo del foro