nombres de desacoplamiento de cadena y de campo

votos
3

Tengo una serie de objetos de dominio / negocio, que cuando se utiliza en un criterio de hibernación hace referencia el nombre del campo como una cadena, por ejemplo:

Criteria crit = session.createCriteria(User.class);
Order myOrdering = Order.desc(firstname);
crit.addOrder(myOrdering);

Donde Nombre es un campo / propiedad de User.class .

Podría crear manualmente una enumeración y almacenar todas las cadenas de allí; ¿hay alguna otra manera de que me falta y requiere menos trabajo (probablemente me voy a olvidar de mantener la enumeración).

Publicado el 27/10/2011 a las 13:10
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

Me temo que no es una buena manera de hacer eso. Incluso si usted decide utilizar reflexiones, descubrirá el problema sólo cuando la consulta se ejecutará.

Pero hay un poco mejor solución de cómo descubrir el problema a tiempo: si utiliza las consultas con nombre (javax.persistence.NamedQueries) obtendrá todas sus consultas compilados tan pronto como sus entidades son procesados ​​por Hibernate, así que básicamente lo hará ocurrir durante el arranque del servidor. Así que si algún objeto se cambió romper la consulta, usted sabrá sobre ello la próxima vez que inicie el servidor y no cuando la consulta se ejecuta realmente.

Espero eso ayude.

Respondida el 27/10/2011 a las 13:30
fuente por usuario

votos
1

Esta es una de las cosas que me irrita de hibernación.

En cualquier caso, he resuelto esto en el pasado usando uno de dos mecanismos, ya sea la personalización de las plantillas utilizadas para generar las clases de base de los archivos de configuración de Hibernate, o interrogar a mis clases de Hibernate para las anotaciones / propiedades y la generación de enumeraciones, clases apropiadas, constantes, etc. de eso. Es bastante sencillo.

Se añade un paso para el proceso de construcción, pero la OMI que era exactamente lo que necesitaba cuando lo hice. (Los últimos proyectos en los que no lo han hecho, pero para cosas grandes, multi-dev me gusta mucho.)

Respondida el 27/10/2011 a las 13:39
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more