Search in sources :

Example 31 with Query

use of org.hibernate.query.Query in project VoxelGamesLibv2 by VoxelGamesLib.

the class HibernatePersistenceProvider method getTop.

@Override
public List<Pair<Component, Double>> getTop(Trackable type, int amount) {
    return session(session -> {
        Query query = session.createQuery("select user.displayName, stat.val from StatInstance stat, UserData user\n" + "where user.uuid = stat.uuid\n" + "and stat.statType = :type\n" + "order by stat.val desc");
        query.setParameter("type", type);
        query.setMaxResults(amount);
        List<Pair<Component, Double>> result = new ArrayList<>();
        // noinspection unchecked
        for (Object[] row : (List<Object[]>) query.getResultList()) {
            result.add(new Pair<>((Component) row[0], (Double) row[1]));
        }
        return result;
    });
}
Also used : Query(org.hibernate.query.Query) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) Component(net.kyori.text.Component) Pair(com.voxelgameslib.voxelgameslib.utils.Pair)

Example 32 with Query

use of org.hibernate.query.Query in project stdlib by petergeneric.

the class JPAQueryBuilder method createSelectIDs.

public Query createSelectIDs() {
    this.generated.distinct(true);
    // Make sure we return the results in the correct order
    generated.orderBy(orders);
    List<Selection<?>> selects = new ArrayList<>();
    if (root.getModel().hasSingleIdAttribute()) {
        selects.add(root.get(root.getModel().getId(root.getModel().getIdType().getJavaType())));
    } else
        throw new NotImplementedException("Cannot handle ID selection with IdClass!");
    for (Order order : orders) {
        selects.add(order.getExpression());
    }
    if (selects.size() == 1)
        generated.select(selects.get(0));
    else
        generated.multiselect(selects);
    final Query query = session.createQuery(generated);
    if (offset != null)
        query.getQueryOptions().setFirstRow(offset);
    if (limit != null)
        query.getQueryOptions().setMaxRows(limit);
    // Set all the parameters
    for (Map.Entry<ParameterExpression, Object> entry : this.params.entrySet()) {
        query.setParameter(entry.getKey(), entry.getValue());
    }
    return query;
}
Also used : WQOrder(com.peterphi.std.guice.restclient.jaxb.webquery.WQOrder) Order(javax.persistence.criteria.Order) Query(org.hibernate.query.Query) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) WebQuery(com.peterphi.std.guice.restclient.jaxb.webquery.WebQuery) Selection(javax.persistence.criteria.Selection) NotImplementedException(com.peterphi.std.NotImplementedException) ParameterExpression(javax.persistence.criteria.ParameterExpression) ArrayList(java.util.ArrayList) HashMap(java.util.HashMap) Map(java.util.Map)

Example 33 with Query

use of org.hibernate.query.Query in project stdlib by petergeneric.

the class JPAQueryBuilder method createSelectCustom.

public <C> Query<C> createSelectCustom(JPAQueryCustomiser customiser) {
    customiser.apply(criteriaBuilder, generated, root, this);
    final Query query = session.createQuery(generated);
    if (offset != null)
        query.getQueryOptions().setFirstRow(offset);
    if (limit != null)
        query.getQueryOptions().setMaxRows(limit);
    // Set all the parameters
    for (Map.Entry<ParameterExpression, Object> entry : this.params.entrySet()) {
        query.setParameter(entry.getKey(), entry.getValue());
    }
    return query;
}
Also used : Query(org.hibernate.query.Query) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) WebQuery(com.peterphi.std.guice.restclient.jaxb.webquery.WebQuery) ParameterExpression(javax.persistence.criteria.ParameterExpression) HashMap(java.util.HashMap) Map(java.util.Map)

Example 34 with Query

use of org.hibernate.query.Query in project querydsl by querydsl.

the class AbstractHibernateSQLQuery method fetchResults.

@Override
public QueryResults<T> fetchResults() {
    // TODO : handle entity projections as well
    try {
        Query query = createQuery(true);
        long total = ((Number) query.uniqueResult()).longValue();
        if (total > 0) {
            QueryModifiers modifiers = queryMixin.getMetadata().getModifiers();
            query = createQuery(false);
            @SuppressWarnings("unchecked") List<T> list = query.list();
            return new QueryResults<T>(list, modifiers, total);
        } else {
            return QueryResults.emptyResults();
        }
    } finally {
        reset();
    }
}
Also used : Query(org.hibernate.query.Query) AbstractSQLQuery(com.querydsl.jpa.AbstractSQLQuery)

Example 35 with Query

use of org.hibernate.query.Query in project querydsl by querydsl.

the class AbstractHibernateQuery method createQuery.

private Query createQuery(@Nullable QueryModifiers modifiers, boolean forCount) {
    JPQLSerializer serializer = serialize(forCount);
    String queryString = serializer.toString();
    logQuery(queryString);
    Query query = session.createQuery(queryString);
    HibernateUtil.setConstants(query, serializer.getConstants(), getMetadata().getParams());
    if (fetchSize > 0) {
        query.setFetchSize(fetchSize);
    }
    if (timeout > 0) {
        query.setTimeout(timeout);
    }
    if (cacheable != null) {
        query.setCacheable(cacheable);
    }
    if (cacheRegion != null) {
        query.setCacheRegion(cacheRegion);
    }
    if (comment != null) {
        query.setComment(comment);
    }
    if (readOnly != null) {
        query.setReadOnly(readOnly);
    }
    for (Map.Entry<Path<?>, LockMode> entry : lockModes.entrySet()) {
        query.setLockMode(entry.getKey().toString(), entry.getValue());
    }
    if (flushMode != null) {
        query.setFlushMode(flushMode);
    }
    if (modifiers != null && modifiers.isRestricting()) {
        Integer limit = modifiers.getLimitAsInteger();
        Integer offset = modifiers.getOffsetAsInteger();
        if (limit != null) {
            query.setMaxResults(limit);
        }
        if (offset != null) {
            query.setFirstResult(offset);
        }
    }
    // set transformer, if necessary
    Expression<?> projection = getMetadata().getProjection();
    if (!forCount && projection instanceof FactoryExpression) {
        query.setResultTransformer(new FactoryExpressionTransformer((FactoryExpression<?>) projection));
    }
    return query;
}
Also used : Path(com.querydsl.core.types.Path) FactoryExpression(com.querydsl.core.types.FactoryExpression) Query(org.hibernate.query.Query) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Query (org.hibernate.query.Query)157 Test (org.junit.Test)44 Session (org.hibernate.Session)39 List (java.util.List)24 ArrayList (java.util.ArrayList)19 TestForIssue (org.hibernate.testing.TestForIssue)19 ObjectQuery (com.evolveum.midpoint.prism.query.ObjectQuery)17 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)17 HashMap (java.util.HashMap)15 Map (java.util.Map)14 NativeQuery (org.hibernate.query.NativeQuery)14 AbstractJPATest (org.hibernate.test.jpa.AbstractJPATest)11 SessionFactory (org.hibernate.SessionFactory)9 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)7 InvocationHandler (java.lang.reflect.InvocationHandler)7 Method (java.lang.reflect.Method)7 SQLException (java.sql.SQLException)7 Collectors (java.util.stream.Collectors)7 AbstractQueryFacade (org.jboss.tools.hibernate.runtime.common.AbstractQueryFacade)7 RQuery (com.evolveum.midpoint.repo.sql.query.RQuery)6