@Test public void setParameterWithWrongTypeShouldNotThrowIllegalArgumentException() { doInJPA(this::entityManagerFactory, entityManager -> { entityManager.createNativeQuery( "select id " + "from Event " + "where readings = :readings" ) .unwrap( NativeQuery.class ) .setParameter( "readings", new String[]{null, "a"}, StringArrayType.INSTANCE ) .getResultList(); }); }
@Test public void testNativeSQL() { doInHibernate( this::sessionFactory, session -> { List<Array> emails = session.createNativeQuery( "select u.emailAddresses from CorporateUser u where u.userName = :name" ) .setParameter( "name", "Vlad" ) .getResultList(); assertEquals( 1, emails.size() ); } ); }
@Test public void testSetParameters() { final List params = new ArrayList(); params.add( new BigInteger( "2" ) ); params.add( new BigInteger( "3" ) ); try (Session s = openSession()) { final Query query = s.createNativeQuery( "select e.big from MY_ENTITY e where e.big in (:bigValues)" ) .setParameter( "bigValues", params ); try (ScrollableResults scroll = query.scroll()) { while ( scroll.next() ) { assertThat( scroll.get()[0], not( nullValue()) ); } } } }
@Test public void test_sql_hibernate_query_parameters_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-query-parameters-example[] List<Person> persons = session.createNativeQuery( "SELECT * " + "FROM Person " + "WHERE name like :name" ) .addEntity( Person.class ) .setParameter("name", "J%") .list(); //end::sql-hibernate-query-parameters-example[] assertEquals(1, persons.size()); }); }
"from Person p " + "where p.id = :personId" ) .setParameter( "personId", 1L ) .getSingleResult(); "from Person p " + "where p.id = :personId" ) .setParameter( "personId", 1L ) .getSingleResult(); "from Person p " + "where p.id = :personId" ) .setParameter( "personId", 1L ) .getSingleResult();
); _session.createNativeQuery( updateStatement() ) .setParameter( "value", "changed" ) .setParameter( "id", it.getId() ) .executeUpdate(); fail( "Pessimistic lock not obtained/held" );
.setParameter( "chaos_size", null, StandardBasicTypes.LONG ) .list(); assertEquals( 1, chaoses.size() ); .setParameter( "chaos_size", null, StandardBasicTypes.LONG ) .list();
.setParameter( "chaos_size", null ) .list(); assertEquals( 1, chaoses.size() ); .setParameter( "chaos_size", null ) .list();
public NativeQuery createNativeQuery(Session session) { StringBuilder query = new StringBuilder(); query.append("SELECT " + this.select); query.append(" FROM " + this.from); if (!StringUtil.isNullOrEmptyForItems(this.where)){ query.append(" WHERE " + this.where); } NativeQuery nativeQuery = session.createNativeQuery(query.toString()); for (Map.Entry<String, Object> entry : this.parameter.entrySet()) { nativeQuery.setParameter(entry.getKey(), entry.getValue()); } return nativeQuery; }
@Test public void testNativeQuery() { BitSet bitSet = BitSet.valueOf( new long[] {1, 2, 3} ); doInHibernate( this::sessionFactory, session -> { Product product = new Product( ); product.setId( 1 ); product.setBitSet( bitSet ); session.persist( product ); } ); doInHibernate( this::sessionFactory, session -> { Product product = (Product) session.getNamedNativeQuery( "find_person_by_bitset") .setParameter( "id", 1L) .getSingleResult(); assertEquals(bitSet, product.getBitSet()); } ); }
private void addEdgeSimple(String oid, String parent, Session session) { if (parent != null) { long start = System.currentTimeMillis(); NativeQuery addToClosureQuery = session.createNativeQuery( "insert into "+ CLOSURE_TABLE_NAME +" (descendant_oid, ancestor_oid, val) " + "select :oid as descendant_oid, CL.ancestor_oid as ancestor_oid, CL.val as val " + "from "+ CLOSURE_TABLE_NAME +" CL " + "where CL.descendant_oid = :parent"); addToClosureQuery.setParameter("oid", oid); addToClosureQuery.setParameter("parent", parent); int count = addToClosureQuery.executeUpdate(); if (LOGGER.isTraceEnabled()) LOGGER.trace("addEdges simplified: Added {} records to closure table ({} ms).", count, System.currentTimeMillis() - start); } session.flush(); session.clear(); }
private List<String> getIfAvailable( ReservedValue reservedValue, List<String> values ) { values.removeAll( getIfReservedValues( reservedValue, values ).stream() .map( ReservedValue::getValue ) .collect( Collectors.toList() ) ); // All values supplied is unavailable if ( values.isEmpty() ) { return values; } if ( Objects.valueOf( reservedValue.getOwnerObject() ).equals( TRACKEDENTITYATTRIBUTE ) ) { values.removeAll( getSqlQuery( "SELECT value FROM trackedentityattributevalue WHERE trackedentityattributeid = (SELECT trackedentityattributeid FROM trackedentityattribute WHERE uid = ?1) AND value IN ?2" ) .setParameter( 1, reservedValue.getOwnerUid() ) .setParameter( 2, values ) .list() ); } return values; } }
/** * This is a more efficient shortcut for writing "getParents().size()", as that would require to load all the parents first. * @return The number of parents of this category. */ public int getNumberOfParents() { BigInteger nrOfInlinks = new BigInteger("0"); long id = this.__getId(); Session session = this.wiki.__getHibernateSession(); session.beginTransaction(); Object returnValue = session.createNativeQuery("select count(inLinks) from category_inlinks where id = :id") .setParameter("id", id, LongType.INSTANCE) .uniqueResult(); session.getTransaction().commit(); if (returnValue != null) { nrOfInlinks = (BigInteger) returnValue; } return nrOfInlinks.intValue(); }
/** * This is a more efficient shortcut for writing "getPages().size()", as that would require to load all the pages first. * @return The number of pages. */ public int getNumberOfPages() { BigInteger nrOfPages = new BigInteger("0"); long id = this.__getId(); Session session = this.wiki.__getHibernateSession(); session.beginTransaction(); Object returnValue = session.createNativeQuery("select count(pages) from category_pages where id = :id") .setParameter("id", id, LongType.INSTANCE) .uniqueResult(); session.getTransaction().commit(); if (returnValue != null) { nrOfPages = (BigInteger) returnValue; } return nrOfPages.intValue(); }
/** * This is a more efficient shortcut for writing "getChildren().size()", as that would require to load all the children first. * @return The number of children of this category. */ public int getNumberOfChildren() { BigInteger nrOfOutlinks = new BigInteger("0"); long id = this.__getId(); Session session = this.wiki.__getHibernateSession(); session.beginTransaction(); Object returnValue = session.createNativeQuery("select count(outLinks) from category_outlinks where id = :id") .setParameter("id", id, LongType.INSTANCE) .uniqueResult(); session.getTransaction().commit(); if (returnValue != null) { nrOfOutlinks = (BigInteger) returnValue; } return nrOfOutlinks.intValue(); }
public final static Object getSingleObjectBySql(BaseDaoImpl<?, ?> baseDao, final String sSql, final String paramName, final Object paramObject) { NativeQuery queryObject = baseDao.getCurrentSession().createNativeQuery(sSql); queryObject.setParameter(paramName, paramObject); return queryObject.uniqueResult(); }
public int getMaxIdLength() { String queryString = "select max(length(id)) as maxidlen from sysconfig"; if (prefix != null) queryString += " where id like :query"; NativeQuery query = db.session().createNativeQuery(queryString); if (prefix != null) query.setParameter ("query", prefix + "%"); return (int) query.addScalar("maxidlen", IntegerType.INSTANCE).getSingleResult(); } }
private void handleDeleteLeaf(String oid, Session session) { NativeQuery removeFromClosureQuery = session.createNativeQuery( "delete from " + CLOSURE_TABLE_NAME + " " + "where descendant_oid = :oid"); removeFromClosureQuery.setParameter("oid", oid); int count = removeFromClosureQuery.executeUpdate(); if (LOGGER.isTraceEnabled()) LOGGER.trace("DeleteLeaf: Removed {} records from closure table.", count); }
/** * Gets the title for a given pageId. * * @param pageId The id of the page. * @return The title for the given pageId. * @throws WikiApiException Thrown if errors occurred. */ public Title getTitle(int pageId) throws WikiApiException { Session session = this.__getHibernateSession(); session.beginTransaction(); Object returnValue = session.createNativeQuery( "select p.name from PageMapLine as p where p.pageId= :pId").setParameter("pId", pageId, IntegerType.INSTANCE).uniqueResult(); session.getTransaction().commit(); String title = (String)returnValue; if(title==null){ throw new WikiPageNotFoundException(); } return new Title(title); }
private void performCleanUp(TestContext ctx) { log( "starting clean up phase" ); try ( Session s = ctx.sessionFactory.openSession() ) { final SessionImplementor session = (SessionImplementor) s; FullTextSession fulltextSession = Search.getFullTextSession( s ); beginTransaction( session ); s.createNativeQuery( "delete from book_author where book_id < :id" ).setParameter( "id", ctx.initialOffset ).executeUpdate(); s.createNativeQuery( "delete from book where id < :id" ).setParameter( "id", ctx.initialOffset ).executeUpdate(); s.createNativeQuery( "delete from author where id < :id" ).setParameter( "id", ctx.initialOffset ).executeUpdate(); fulltextSession.purgeAll( Book.class ); fulltextSession.flushToIndexes(); commitTransaction( session ); } }