Example usage for org.hibernate.ejb HibernateQuery getHibernateQuery

List of usage examples for org.hibernate.ejb HibernateQuery getHibernateQuery

Introduction

In this page you can find the example usage for org.hibernate.ejb HibernateQuery getHibernateQuery.

Prototype

public org.hibernate.Query getHibernateQuery();

Source Link

Document

Gives access to the underlying Hibernate query object..

Usage

From source file:com.mysema.query.jpa.HibernateHandler.java

License:Apache License

@Override
public <T> CloseableIterator<T> iterate(Query query, FactoryExpression<?> projection) {
    if (query instanceof HibernateQuery) {
        HibernateQuery hQuery = (HibernateQuery) query;
        ScrollableResults results = hQuery.getHibernateQuery().scroll(ScrollMode.FORWARD_ONLY);
        CloseableIterator<T> iterator = new ScrollableResultsIterator<T>(results);
        if (projection != null) {
            iterator = new TransformingIterator<T>(iterator, projection);
        }/*  w w  w  . j  av  a  2 s.  c om*/
        return iterator;
    } else {
        Iterator<T> iterator = query.getResultList().iterator();
        if (projection != null) {
            return new TransformingIterator<T>(iterator, projection);
        } else {
            return new IteratorAdapter<T>(iterator);
        }
    }
}

From source file:it.eng.qbe.statement.jpa.JPQL2SQLStatementRewriter.java

License:Mozilla Public License

/**
 * Rewrite the JPQL query in a SQL String (The persistence provider implementation in use is Hibernate) 
 * @param query The JPQL query/* w ww . j a v  a 2  s  .  c  o m*/
 * @return the string of the JPQL query translated in SQL
 */
private String rewriteHibernate(Query query) {
    org.hibernate.ejb.HibernateEntityManager em = (org.hibernate.ejb.HibernateEntityManager) this.entityManager;
    org.hibernate.ejb.HibernateQuery qi = (org.hibernate.ejb.HibernateQuery) (query);
    em.getSession();
    HQL2SQLStatementRewriter queryRewriter = new HQL2SQLStatementRewriter(em.getSession());
    String sqlQueryString = queryRewriter.rewrite(qi.getHibernateQuery().getQueryString());
    return sqlQueryString;
}

From source file:org.compass.gps.device.jpa.indexer.HibernateJpaIndexEntitiesIndexer.java

License:Apache License

public void performIndex(CompassSession session, IndexEntity[] entities) {
    for (IndexEntity indexEntity : entities) {
        EntityInformation entityInformation = (EntityInformation) indexEntity;
        if (jpaGpsDevice.isFilteredForIndex(entityInformation.getName())) {
            continue;
        }//from   ww  w . j  a v  a  2  s .c o  m
        int fetchCount = jpaGpsDevice.getFetchCount();
        if (!jpaGpsDevice.isRunning()) {
            return;
        }
        EntityManagerWrapper wrapper = jpaGpsDevice.getEntityManagerWrapper().newInstance();
        ScrollableResults cursor = null;
        try {
            wrapper.open();
            HibernateEntityManager entityManager = (HibernateEntityManager) wrapper.getEntityManager();
            entityManager.getSession().setCacheMode(CacheMode.IGNORE);
            if (log.isDebugEnabled()) {
                log.debug(jpaGpsDevice.buildMessage("Indexing entities [" + entityInformation.getName()
                        + "] using query [" + entityInformation.getQueryProvider() + "]"));
            }

            if (entityInformation.getQueryProvider() instanceof HibernateJpaQueryProvider) {
                Criteria criteria = ((HibernateJpaQueryProvider) entityInformation.getQueryProvider())
                        .createCriteria(entityManager, entityInformation);
                if (criteria != null) {
                    if (performOrderById) {
                        Boolean performOrder = performOrderByPerEntity.get(entityInformation.getName());
                        if (performOrder == null || performOrder) {
                            ClassMetadata metadata = entityManager.getSession().getSessionFactory()
                                    .getClassMetadata(entityInformation.getName());
                            String idPropName = metadata.getIdentifierPropertyName();
                            if (idPropName != null) {
                                criteria.addOrder(Order.asc(idPropName));
                            }
                        }
                    }
                    criteria.setFetchSize(fetchCount);
                    cursor = criteria.scroll(ScrollMode.FORWARD_ONLY);
                }
            }
            if (cursor == null) {
                HibernateQuery query = (HibernateQuery) entityInformation.getQueryProvider()
                        .createQuery(entityManager, entityInformation);
                cursor = query.getHibernateQuery().scroll(ScrollMode.FORWARD_ONLY);
            }

            // store things in row buffer to allow using batch fetching in Hibernate
            RowBuffer buffer = new RowBuffer(session, entityManager.getSession(), fetchCount);
            Object prev = null;
            while (true) {
                try {
                    if (!cursor.next()) {
                        break;
                    }
                } catch (ObjectNotFoundException e) {
                    continue;
                }
                Object item = cursor.get(0);
                if (item != prev && prev != null) {
                    buffer.put(prev);
                }
                prev = item;
                if (buffer.shouldFlush()) {
                    // put also the item/prev since we are clearing the session
                    // in the flush process
                    buffer.put(prev);
                    buffer.flush();
                    prev = null;
                }
            }
            if (prev != null) {
                buffer.put(prev);
            }
            buffer.close();
            cursor.close();

            entityManager.clear();
            wrapper.close();
        } catch (Exception e) {
            log.error(jpaGpsDevice.buildMessage("Failed to index the database"), e);
            if (cursor != null) {
                try {
                    cursor.close();
                } catch (Exception e1) {
                    log.warn(jpaGpsDevice.buildMessage("Failed to close cursor on error, ignoring"), e1);
                }
            }
            wrapper.closeOnError();
            if (!(e instanceof JpaGpsDeviceException)) {
                throw new JpaGpsDeviceException(jpaGpsDevice.buildMessage("Failed to index the database"), e);
            }
            throw (JpaGpsDeviceException) e;
        }
    }
}

From source file:org.springframework.data.jpa.repository.query.PartTreeJpaQueryIntegrationTests.java

License:Apache License

/**
 * @see DATAJPA-121//from  w  ww . jav a  2 s  .co m
 */
@Test
public void recreatesQueryIfNullValueIsGiven() throws Exception {

    Method method = UserRepository.class.getMethod("findByFirstname", String.class, Pageable.class);
    JpaQueryMethod queryMethod = new JpaQueryMethod(method, new DefaultRepositoryMetadata(UserRepository.class),
            PersistenceProvider.fromEntityManager(entityManager));
    PartTreeJpaQuery jpaQuery = new PartTreeJpaQuery(queryMethod, entityManager);

    Query query = jpaQuery.createQuery(new Object[] { "Matthews", new PageRequest(0, 1) });

    HibernateQuery hibernateQuery = getValue(query, PROPERTY);
    assertThat(hibernateQuery.getHibernateQuery().getQueryString(), endsWith("firstname=:param0"));

    query = jpaQuery.createQuery(new Object[] { null, new PageRequest(0, 1) });

    hibernateQuery = getValue(query, PROPERTY);
    assertThat(hibernateQuery.getHibernateQuery().getQueryString(), endsWith("firstname is null"));
}