estoy usando JPA y tengo la siguiente entidad:Cómo realizar consultas a las entidades por su valor de colección
@Entity
@Table(name="favorites_folders")
public class FavoritesFolder {
private static final long serialVersionUID = 1L;
@Id
private String id;
@NotNull
@Size(min = 1, max = 50)
public String name;
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(
name="favorites_products",
[email protected](name="folder_id")
)
@Column(name="product_id")
@NotNull
private Set<String> productsIds = new HashSet<String>();
}
Lo que quiero hacer es conseguir un conjunto de entidades FavoritesFolder
que contiene la cadena "favorito -id "en su conjunto de miembros productsIds
.
¿Alguien sabe cómo se puede hacer en criterios api?
Actualización:
Estoy pensando en el siguiente SQL debe hacer el truco, pero no estoy seguro de cómo hacerlo, ya sea en JPQL
o Criteria API
:
select * from favorites_folders join favorites_products on favorites_folders.id = favorites_products.folder_id where favorites_products.product_id = 'favorite-id'
Sé que en este tema estamos según los planes de ID y por lo tanto tiene que ser igual a la altura, pero digamos que tenemos una 'Colección' en su lugar, ¿podemos hacer esencialmente lo mismo pero en lugar de necesitar que un elemento sea 'igual', podríamos tener un elemento MATCH usando' LIKE'? –
dominicbri7
@ dominicbri7 en una [pregunta] relacionada (http://stackoverflow.com/questions/7066122/how-to-make-a-like-query-to-elementcollection-of-type-map?rq=1) Encontré la solución. Use el método join en la clase Root 'cb.like (from.join (" apples "). Get (" color "), textParameter)' – cirovladimir