/** * Returns a named {@link Query}. * * @param queryName the name of the query * @return the named query * @see Session#getNamedQuery(String) */ protected Query<?> namedQuery(String queryName) throws HibernateException { return currentSession().getNamedQuery(requireNonNull(queryName)); }
@Test public void testNamedQuery() throws Exception { Session s = openSession(); s.beginTransaction(); Query q = s.getNamedQuery("all_details"); q.list(); s.getTransaction().commit(); s.close(); }
@Test public void testPackageQueries() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); Plane p = new Plane(); s.persist( p ); Query q = s.getNamedQuery( "plane.getAll" ); assertEquals( 1, q.list().size() ); s.delete( q.list().get( 0 ) ); tx.commit(); s.close(); }
@Test public void testNamedQueriesOrdinalParametersAreOneBased() { doInHibernate( this::sessionFactory, session -> { Query query = session.getNamedQuery( "NamedQuery" ); query.setParameter( 1, GAME_TITLES[0] ); List list = query.getResultList(); assertEquals( 1, list.size() ); } ); }
@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 test_hql_api_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::hql-api-named-query-example[] org.hibernate.query.Query query = session.getNamedQuery( "get_person_by_name" ); //end::hql-api-named-query-example[] }); }
/** * We are testing 2 things here: * 1. The query 'night.olderThan' is defined in a MappedSuperClass - Darkness. * We are verifying that queries defined in a MappedSuperClass are processed. * 2. There are 2 Entity classes that extend from Darkness - Night and Twilight. * We are verifying that this does not cause any issues.eg. Double processing of the * MappedSuperClass */ @Test public void testImportQueryFromMappedSuperclass() { Session s = openSession(); try { s.getNamedQuery( "night.olderThan" ); } catch ( MappingException ex ) { fail( "Query imported from MappedSuperclass" ); } s.close(); }
@Test public void testXmlDefaultOverriding() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); Manufacturer manufacturer = new Manufacturer(); s.persist( manufacturer ); s.flush(); s.clear(); assertEquals( 1, s.getNamedQuery( "manufacturer.findAll" ).list().size() ); tx.rollback(); s.close(); }
@Test public void test_sql_hibernate_scalar_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-scalar-named-query-example[] List<String> names = session.getNamedQuery( "find_person_name" ) .list(); //end::sql-hibernate-scalar-named-query-example[] assertEquals(3, names.size()); }); }
@Test @FailureExpected( jiraKey = "unknown" ) public void testReturnPropertyComponentRename() throws HibernateException, SQLException { // failure expected because this was a regression introduced previously which needs to get tracked down. Componentizable componentizable = setupComponentData(); Session session = openSession(); session.beginTransaction(); Query namedQuery = session.getNamedQuery("queryComponentWithOtherColumn"); List list = namedQuery.list(); assertEquals(1, list.size()); assertEquals( "flakky comp", ( (Componentizable) list.get(0) ).getComponent().getName() ); session.clear(); session.delete(componentizable); session.getTransaction().commit(); session.close(); }
@Test public void test_sql_hibernate_multiple_scalar_values_dto_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-multiple-scalar-values-dto-named-query-example[] List<PersonNames> personNames = session.getNamedQuery( "find_person_name_and_nickName_dto" ) .list(); //end::sql-hibernate-multiple-scalar-values-dto-named-query-example[] assertEquals(3, personNames.size()); }); }
@Test public void test_sql_hibernate_multiple_scalar_values_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-multiple-scalar-values-named-query-example[] List<Object[]> tuples = session.getNamedQuery( "find_person_name_and_nickName" ) .list(); for(Object[] tuple : tuples) { String name = (String) tuple[0]; String nickName = (String) tuple[1]; } //end::sql-hibernate-multiple-scalar-values-named-query-example[] assertEquals(3, tuples.size()); }); }
@Test public void testImplicitNativeQuery() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); SpaceShip ship = new SpaceShip(); ship.setModel( "X-Wing" ); ship.setName( "YuBlue" ); ship.setSpeed( 2000 ); ship.setDimensions( new Dimensions() ); s.persist( ship ); tx.commit(); s.clear(); tx = s.beginTransaction(); Query q = s.getNamedQuery( "implicitSample" ); List result = q.list(); assertEquals( 1, result.size() ); assertEquals( ship.getModel(), ( (SpaceShip) result.get( 0 ) ).getModel() ); s.delete( result.get( 0 ) ); tx.commit(); s.close(); }
@Test public void test_sql_hibernate_entity_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-entity-named-query-example[] List<Person> persons = session.getNamedQuery( "find_person_by_name" ) .setParameter("name", "J%") .list(); //end::sql-hibernate-entity-named-query-example[] assertEquals(1, persons.size()); }); }
@Test public void test_sql_hibernate_composite_key_entity_associations_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-composite-key-entity-associations_named-query-example[] List<Object[]> tuples = session.getNamedQuery( "find_all_spaceships" ) .list(); for(Object[] tuple : tuples) { SpaceShip spaceShip = (SpaceShip) tuple[0]; Number surface = (Number) tuple[1]; Number volume = (Number) tuple[2]; } //end::sql-hibernate-composite-key-entity-associations_named-query-example[] assertEquals(1, tuples.size()); }); } }
@Test public void testDeleteSingleValue() { final String name = "Name"; final String lastName = "LastName"; final String fullName = name + " " + lastName; final FromEntity fromEntity = createFrom( name, lastName ); final DestinationEntity destinationEntity = createDestination( fromEntity, fullName ); Session session = openSession(); session.getTransaction().begin(); Query delete = session.getNamedQuery( "DestinationEntity.delete" ); delete.setParameterList( "ids", Collections.singletonList( destinationEntity.id ) ); int executeUpdate = delete.executeUpdate(); assertEquals( 1, executeUpdate ); session.getTransaction().commit(); session.close(); session = openSession(); DestinationEntity get = (DestinationEntity) session.get( DestinationEntity.class, destinationEntity.id ); session.close(); assertNull( get ); }
@Test @RequiresDialectFeature( DialectChecks.DoubleQuoteQuoting.class ) public void testSQLQuery() { Session s = openSession(); Transaction t = s.beginTransaction(); User gavin = new User("gavin", "secret"); User turin = new User("turin", "tiger"); gavin.getSession().put( "foo", new SessionAttribute("foo", "foo bar baz") ); gavin.getSession().put( "bar", new SessionAttribute("bar", "foo bar baz 2") ); s.persist(gavin); s.persist(turin); s.flush(); s.clear(); List results = s.getNamedQuery("userSessionData").setParameter("uname", "%in").list(); assertEquals( results.size(), 2 ); gavin = (User) ( (Object[]) results.get(0) )[0]; assertEquals( gavin.getName(), "gavin" ); assertEquals( gavin.getSession().size(), 2 ); s.createQuery("delete SessionAttribute").executeUpdate(); s.createQuery("delete User").executeUpdate(); t.commit(); s.close(); }
@Test public void testSingleSelect() { final String name = "Name"; final String lastName = "LastName"; final String fullName = name + " " + lastName; final DestinationEntity destination = createDestination( createFrom( name, lastName ), fullName ); Session session = openSession(); Query select = session.getNamedQuery( "DestinationEntity.selectIds" ); select.setParameterList( "ids", Collections.singletonList( destination.id ) ); Object[] unique = (Object[]) select.uniqueResult(); session.close(); // Compare the Strings, not the actual IDs. Can come back as, for ex, // a BigDecimal in Oracle. assertEquals( destination.id + "", unique[0] + "" ); assertEquals( destination.from.id + "", unique[1] + "" ); assertEquals( destination.fullNameFrom, unique[2] ); }
@Test public void testRegisteredNamedSQLQueryWithScalar() { final NamedSQLQueryDefinitionBuilder builder = new NamedSQLQueryDefinitionBuilder(); builder.setName("namedQuery"); builder.setQuery("select count(*) AS c from ORGANIZATION"); builder.setQueryReturns(new NativeSQLQueryReturn[1]); sessionFactory().registerNamedSQLQueryDefinition("namedQuery", builder.createNamedQueryDefinition()); final Session s = openSession(); s.beginTransaction(); final SQLQuery query = (SQLQuery) s.getNamedQuery("namedQuery"); query.addScalar("c"); final Number result = (Number) query.uniqueResult(); s.getTransaction().commit(); s.close(); assertNotNull(result); assertTrue(0 == result.intValue()); }
@Test @RequiresDialect(H2Dialect.class) @RequiresDialect(Oracle8iDialect.class) @RequiresDialect(PostgreSQL82Dialect.class) public void test_sql_hibernate_entity_associations_named_query_example() { doInJPA( this::entityManagerFactory, entityManager -> { Session session = entityManager.unwrap( Session.class ); //tag::sql-hibernate-entity-associations_named-query-example[] List<Object[]> tuples = session.getNamedQuery( "find_person_with_phones_by_name" ) .setParameter("name", "J%") .list(); for(Object[] tuple : tuples) { Person person = (Person) tuple[0]; Phone phone = (Phone) tuple[1]; } //end::sql-hibernate-entity-associations_named-query-example[] assertEquals(1, tuples.size()); }); }