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;
});
}
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;
}
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;
}
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();
}
}
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;
}
Aggregations