2011-08-08 11 views
11

necesito tomar HQL que es actualmente:Hibernate nueva palabra clave con distinta

select distinct a from Asset as a where ... 

y cambiarlo a

select new com.org.AssetDTO(a.id, a.address, a.status) from Asset as a where ... 

Mi problema es con la palabra clave distinta. ¿A dónde pertenece en una consulta hql donde está utilizando el nuevo tipo de consulta de objeto? Un pensamiento fue usar una sub selección y tener mi distinción allí. Intenté agregar distinct a.id pero eso no funciona.

Respuesta

16

bien para cualquier persona interesada es la sintaxis correcta

select distinct new com.org.AssetDTO(a.id, a.address, a.status) from Asset as a where ... 
+0

¿Significa esto el resultado de la consulta, no se ve afectada por el método de AssetDTO() es igual a? – Leon

+0

¿Por qué los resultados de la consulta se verían afectados por el método equals()? Tal vez no entiendo su pregunta – dstarh

+0

'distinct com.org.AssetDTO diferente 'es equivalente a' distinct a from Asset' y no es equivalente a 'distinct (a.id, a.address, a.status)'. Todos los campos de la entidad se utilizan para seleccionar DISTINCT? – Leon

Cuestiones relacionadas