List of usage examples for org.hibernate.ejb HibernateQuery getHibernateQuery
public org.hibernate.Query getHibernateQuery();
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")); }