używam WZP i mam następujące jednostki:Jak kwerendy dla podmiotów przez ich wartości zbiórki
@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>();
}
Co chcę zrobić, to dostać zestaw FavoritesFolder
podmiotów, które zawiera ciąg „ulubiony -id "w swoim zestawie elementów productsIds
.
Czy ktoś wie, jak to zrobić w kryteriów api?
Aktualizacja:
myślę następujące sql powinno załatwić sprawę, ale nie jestem pewien, jak to zrobić w dowolnym JPQL
lub Criteria API
:
select * from favorites_folders join favorites_products on favorites_folders.id = favorites_products.folder_id where favorites_products.product_id = 'favorite-id'
wiem w tym temacie jesteśmy nawiązujący do identyfikatorów i dlatego muszą być równe, aby dopasować, ale powiedzmy, że mamy 'Collection' zamiast, czy możemy zrobić zasadniczo to samo, ale zamiast potrzebować elementu, który ma być "równy", możemy mieć pozycję MATCH używając 'LIKE'? –
dominicbri7
@ dominicbri7 na pokrewnym [pytanie] (http://stackoverflow.com/questions/7066122/how-to-make-a-like-query-to-elementcollection-of-type-map?rq=1) Znalazłem rozwiązanie. Użyj metody łączenia w klasie Root "cb.like (from.join (" apples "). Get (" color "), textParameter) – cirovladimir