@SuppressWarnings("unchecked") private List<DestinationEntity> findDestinationByIds(List<Integer> ids) { Session session = openSession(); List<DestinationEntity> list = session .createQuery( "from DestinationEntity de where de.id in (:ids) order by id" ) .setParameterList( "ids", ids ).list(); session.close(); return list; }
@Test public void testReusingQueryWithNewParameterValues() throws Exception { try (Session session = openSession()) { Collection<Long> ids = new ArrayList<>(); Query q = session.createQuery( "select id from Person where id in (:ids) order by id" ); for ( int i = 0; i < 10; i++ ) { ids.add( Long.valueOf( i ) ); } q.setParameterList( "ids", ids ); q.list(); ids.clear(); for ( int i = 10; i < 20; i++ ) { ids.add( Long.valueOf( i ) ); } // reuse the same query, but set new collection parameter q.setParameterList( "ids", ids ); List<Long> foundIds = q.list(); assertThat( "Wrong number of results", foundIds.size(), is( ids.size() ) ); assertThat( foundIds, is( ids ) ); } }
@Test public void testNamedQuery() { Session s = openSession(); Transaction t = s.beginTransaction(); s.getNamedQuery("userNameIn") .setParameterList( "nameList", new Object[] {"1ovthafew", "turin", "xam"} ) .list(); t.commit(); s.close(); }
@Test public void testMapKeyExpressionInWhere() { doInHibernate( this::sessionFactory, s -> { // JPA form Query query = s.createQuery( "select te from TestEntity te join te.values v where ?1 in (key(v)) " ); query.setParameter( 1, keyValue ); assertThat( query.list().size(), is( 1 ) ); // Hibernate additional form query = s.createQuery( "select te from TestEntity te where ?1 in (key(te.values))" ); query.setParameter( 1, keyValue ); assertThat( query.list().size(), is( 1 ) ); // Test key property dereference query = s.createQuery( "select te from TestEntity te join te.values v where key(v).name in :names" ); query.setParameterList( "names", Arrays.asList( keyValue.name ) ); assertThat( query.list().size(), is( 1 ) ); } ); }
params.add( "Public" ); s.createQuery( "from Human where name.last in (?1)" ) .setParameterList( 1, params ) .list(); .setParameterList( 1, params ) .list(); .setParameter( 1, "Yogster" ) .setParameter( 2, "Yogi" ) .setParameterList( 3, params ) .list(); .setParameter( 1, "Yogster" ) .setParameter( 2, "Yogi" ) .setParameterList( 3, params ) .list(); .setParameter( 1, "Yogster" ) .setParameter( 2, "Yogi" ) .setParameterList( 3, params ) .list(); .setParameter( 1, "Yogster" ) .setParameter( 2, "Yogi" ) .setParameterList( 3, params ) .list();
@Test @TestForIssue(jiraKey = "HHH-10577") public void testMapValueExpressionInWhere() { doInHibernate( this::sessionFactory, s -> { // JPA form try { Query query = s.createQuery( "select te from TestEntity te join te.values v where ? in (value(v))" ); query.setParameter( 0, new EmbeddableValue( 3 ) ); assertThat( query.list().size(), is( 2 ) ); fail( "HibernateException expected - Could not determine type for EmbeddableValue" ); } catch ( Exception e ) { assertTyping( IllegalArgumentException.class, e ); } // Hibernate additional form try { Query query = s.createQuery( "select te from TestEntity te where ? in (value(te.values))" ); query.setParameter( 0, new EmbeddableValue( 3 ) ); assertThat( query.list().size(), is( 2 ) ); fail( "HibernateException expected - Could not determine type for EmbeddableValue" ); } catch ( Exception e ) { assertTyping( IllegalArgumentException.class, e ); } // Test value property dereference Query query = s.createQuery( "select te from TestEntity te join te.values v where value(v).value in :values" ); query.setParameterList( "values", Arrays.asList( 3 ) ); assertThat( query.list().size(), is( 2 ) ); } ); }
.setParameterList( 1, namesArray ) .setParameterList( 2, citiesArray ) .list();
.setParameterList( "employeegroupIds", parameters ).list();
assertEquals( s.createQuery("from Person p where p.class = Person").list().size(), 1 ); assertEquals( s.createQuery("from Person p where type(p) in :who").setParameter("who", Customer.class).list().size(), 1 ); assertEquals( s.createQuery("from Person p where type(p) in :who").setParameterList("who", new Class[] {Customer.class, Person.class}).list().size(), 2 ); s.clear();
assertEquals( s.createQuery("from Person p where p.class = Person").list().size(), 1 ); assertEquals( s.createQuery("from Person p where type(p) in :who").setParameter("who", Customer.class).list().size(), 1 ); assertEquals( s.createQuery("from Person p where type(p) in :who").setParameterList("who", new Class[] {Customer.class, Person.class}).list().size(), 2 ); s.clear();
assertEquals( s.createQuery("from Being b where b.class = Alien").list().size(), 1 ); assertEquals( s.createQuery("from Being b where type(b) = :what").setParameter("what", Alien.class).list().size(), 1 ); assertEquals( s.createQuery("from Being b where type(b) in :what").setParameterList("what", new Class[] { Alien.class, Human.class }).list().size(), 2 ); assertEquals( s.createQuery("from Alien").list().size(), 1 ); s.clear();
).setParameterList( "groups", new Long[] { group1.getId(), group2.getId() }
public Query<?> getQuery(Session session, String sql) { Query<?> query = session.createQuery(sql); if (null != map) { for (String key : map.keySet()) { query.setParameter(key, map.get(key)); } } if (null != arrayMap) { for (String key : arrayMap.keySet()) { query.setParameterList(key, arrayMap.get(key)); } } if (null != firstResult) { query.setFirstResult(firstResult); } if (null != maxResults) { query.setMaxResults(maxResults); } if (null != cacheable) { query.setCacheable(cacheable); } else { query.setCacheable(true); } return query; }
public Query<?> getQuery(Session session, String sql) { Query<?> query = session.createQuery(sql); if (null != map) { for (String key : map.keySet()) { query.setParameter(key, map.get(key)); } } if (null != arrayMap) { for (String key : arrayMap.keySet()) { query.setParameterList(key, arrayMap.get(key)); } } if (null != firstResult) { query.setFirstResult(firstResult); } if (null != maxResults) { query.setMaxResults(maxResults); } if (null != cacheable) { query.setCacheable(cacheable); } else { query.setCacheable(true); } return query; }
@Override public Query setParameterList(final String name, final Collection vals) throws HibernateException { try { if (queryV2ForCompare != null) { queryV2ForCompare.setParameterList(name, vals); } query.setParameterList(name, vals); } catch (final PersistenceException ex) { throw HibernateExceptionAdapter.adapt(ex); } return this; }
@Override public Query setParameterList(final String name, final Object[] vals) throws HibernateException { try { if (queryV2ForCompare != null) { queryV2ForCompare.setParameterList(name, vals); } query.setParameterList(name, vals); } catch (final PersistenceException ex) { throw HibernateExceptionAdapter.adapt(ex); } return this; }
@Override public Query setParameterList(final String name, final Collection vals, final Type type) throws HibernateException { try { if (queryV2ForCompare != null) { queryV2ForCompare.setParameterList(name, vals, type); } query.setParameterList(name, vals, TypeV5Adapter.adapt(session.getSessionFactory(), type)); } catch (final PersistenceException ex) { throw HibernateExceptionAdapter.adapt(ex); } return this; }
@Test @TestForIssue(jiraKey = "OGM-581") public void testParameterList() throws Exception { List<String> paramList = Arrays.asList( "Lama", "Puma" ); List<?> result = session.createQuery( "from Helicopter h where h.name IN (:names)" ).setParameterList( "names", paramList ).list(); assertThat( result ).onProperty( "name" ).containsOnly( "Lama" ); }
@Test @TestForIssue(jiraKey = "OGM-581") public void testParameterListWithLongList() throws Exception { List<Long> paramList = Arrays.asList( 1L, 2L, 4L ); List<?> result = session.createQuery( "from Author a where a.id IN (:ids)" ).setParameterList( "ids", paramList ).list(); assertThat( result ).onProperty( "id" ).containsOnly( 1L, 2L ); }
@Test @TestForIssue(jiraKey = "OGM-581") public void testParameterListWithLongArray() throws Exception { Long[] paramArray = new Long[] { 1L, 2L, 4L }; List<?> result = session.createQuery( "from Author a where a.id IN (:ids)" ).setParameterList( "ids", paramArray ).list(); assertThat( result ).onProperty( "id" ).containsOnly( 1L, 2L ); }