1 19 20 21 package org.apache.cayenne.jpa.bridge; 22 23 import java.util.Collections ; 24 25 import org.apache.cayenne.jpa.map.JpaQueryHint; 26 import org.apache.cayenne.CayenneRuntimeException; 27 import org.apache.cayenne.exp.Expression; 28 import org.apache.cayenne.map.EntityResolver; 29 import org.apache.cayenne.query.Query; 30 import org.apache.cayenne.query.SelectQuery; 31 32 38 public class JpaSelectQuery extends JpaIndirectQuery { 39 40 43 @Override 44 protected Query createReplacementQuery(EntityResolver resolver) { 45 SelectQuery query = new SelectQuery(); 46 47 if (parentEntity != null) { 48 query.setRoot(parentEntity); 49 } 50 else { 51 throw new CayenneRuntimeException("No parent entity. Query name: " 52 + getName()); 53 } 54 55 57 JpaQueryHint dataRowsHint = jpaQuery.getHint(QueryHints.DATA_ROWS_HINT); 58 if (dataRowsHint != null) { 59 query.setFetchingDataRows("true".equalsIgnoreCase(dataRowsHint.getValue())); 60 } 61 62 64 JpaQueryHint qualifierHint = jpaQuery.getHint(QueryHints.QUALIFIER_HINT); 65 if (qualifierHint != null) { 66 query.setQualifier(Expression.fromString(qualifierHint.getValue())); 67 } 68 69 return query.queryWithParameters(parameters != null 70 ? parameters 71 : Collections.EMPTY_MAP); 72 } 73 } 74 | Popular Tags |