2012-09-14 21 views
10

Estoy intentando escribir una consulta criterios distintos, usando:Criterios JPA Consulte distinta

CriteriaBuilder builder = em.getCriteriaBuilder(); 
CriteriaQuery<RuleVar> query = builder.createQuery(RuleVar.class); 
Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class); 
query.select(ruleVariableRoot.get("foo").<String>get("foo")).distinct(true); 

Basado en el ejemplo en el Javadoc para CriteriaQuery.select()

CriteriaQuery<String> q = cb.createQuery(String.class); 
Root<Order> order = q.from(Order.class); 
q.select(order.get("shippingAddress").<String>get("state")); 

Sin embargo, esto da me un error:

The method select(Selection<? extends RuleVar>) in the type CriteriaQuery<RuleVar> is not applicable for the arguments (Path<String>) 

¿Alguien puede indicar lo que estoy haciendo mal? ¿O cómo obtener un objeto Selección de una Ruta?

Respuesta

38

Lo tengo. El problema era que mi CriteraQuery necesitaba ser de tipo String. Esto funciona:

CriteriaBuilder builder = em.getCriteriaBuilder(); 
CriteriaQuery<String> query = builder.createQuery(String.class); 
Root<RuleVar> ruleVariableRoot = query.from(RuleVar.class); 
query.select(ruleVariableRoot.get(RuleVar_.varType)).distinct(true); 
Cuestiones relacionadas