2012-01-23 10 views
6

Tengo un extraño requisito comercial.Solicitud y paginación a través de múltiples tipos de entidad no relacionados con Hibernate

Tenemos múltiples tipos de entidades no relacionadas que deberán mostrarse en una lista unificada, con información básica de la entidad, ordenada por el único campo del que todos tienen la garantía, DATE. Estas entidades pueden o no estar en la misma base de datos. El conjunto de resultados debe ser paginable.

¿Hay alguna manera factible de lograr esto a través de Criteria, HQL o alguna sane medios?

Respuesta

4

Normalmente, permite que todas estas clases amplíen la clase base común y usen la consulta Hibernate polimórfica. De su descripción, esto no parece ser factible.

Por supuesto, si quiere ir por el modo Hibernate, primero debe buscar el tamaño de cada tabla no relacionada, determinar en qué tabla se encuentran los registros en la página solicitada (o tal vez en varios) y buscar manualmente página. Esto es realmente engorroso y definitivamente debe estar oculto debajo de algún DAO profundo.

Parece que solo sane solución es el buen viejo SQL con UNION y asignación de consulta nativa a los objetos de su dominio. Hibernate admite consultas nativas bastante bien.

+1

Correcto - no habrá una clase base común. Su primera sugerencia fue la única Hibernate-way en la que he pensado hasta ahora, y no se ve bonita. Mi única indecisión entre elegir uno de esos dos métodos es la capacidad de mantenimiento al agregar más entidades a la mezcla en un momento posterior. – bvulaj

Cuestiones relacionadas