La consulta de las colecciones de tipo de valor en los Criterios de la API en modo de Hibernación
Pregunta
En mi base de datos tengo una tabla de entidad (vamos a llamar a la Entidad).Cada entidad puede tener un número de tipos de entidades, y el conjunto de los tipos de entidad que es estático.Por lo tanto, hay una conexión de la tabla que contiene las filas de la id de la entidad y el nombre de la tipo de entidad.En mi código, EntityType es una enumeración, y la Entidad es una de Hibernación asignado en clase.
en el código de Entidad, la asignación se parece a esto:
@CollectionOfElements
@JoinTable(
name = "ENTITY-ENTITY-TYPE",
joinColumns = @JoinColumn(name = "ENTITY-ID")
)
@Column(name="ENTITY-TYPE")
public Set<EntityType> getEntityTypes() {
return entityTypes;
}
Oh, ¿he mencionado que estoy usando anotaciones?
Ahora, lo que me gustaría hacer es crear una consulta HQL o de búsqueda utilizando un Criterio para todos los objetos de Entidad de un determinado tipo de entidad.
Este en la página de Hibernate en el foro de dice que esto es imposible, pero esta página es de 18 meses de edad.¿Alguien puede decirme si esta característica ha sido implementado en una de las últimas versiones de Hibernación, o previstas para la próxima versión?
Solución
HQL:
select entity from Entity entity where :type = some elements(entity.types)
Creo que también se puede escribir como:
select entity from Entity entity where :type in(entity.types)
Otros consejos
Es tu relación bidireccional, es decir, hace EntityType
tiene una Entity
la propiedad?Si es así, usted probablemente puede hacer algo como entity.Name from EntityType where name = ?