@Override public Spell findByName(String name) { Transaction tx = null; Spell result = null; try (Session session = getSessionFactory().openSession()) { tx = session.beginTransaction(); Criteria criteria = session.createCriteria(persistentClass); criteria.add(Restrictions.eq("name", name)); result = (Spell) criteria.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { tx.rollback(); } throw e; } return result; } }
@Test public void testSimpleCaseStatementFixture() { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery( "select case p.name when 'Steve' then 'x' else 'y' end from Person p" ) .list(); t.commit(); s.close(); }
@SuppressWarnings("unchecked") private static <T> List<T> doSearch(Session session, Class<T> clazz, Integer entityId) { FullTextSession fullTextSession = Search.getFullTextSession( session ); Transaction tx = fullTextSession.beginTransaction(); FullTextQuery query = fullTextSession.createFullTextQuery( new TermQuery( new Term( "id", entityId.toString() ) ), clazz ); List<T> result = query.list(); tx.commit(); return result; } }
@Test public void testMultipleUpdatesTriggeredByContainedIn() { PersonalContact contact = createTestData(); FullTextSession s = Search.getFullTextSession( openSession( ) ); s.getTransaction().begin(); contact = (PersonalContact) s.load( PersonalContact.class, contact.getId() ); contact.setEmail( "spam@hibernate.org" ); s.getTransaction().commit(); s.close(); }
@Test public void testObjectTypeFilteringTwoClasses() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Author.class, Music.class ); List result = fullTextQuery.list(); assertEquals( "Should match the author and music only", 2, result.size() ); tx.commit(); fullTextSession.close(); }
@Test public void testNarrow() throws Exception { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery("from E e join e.reverse as b where b.count=1").list(); s.createQuery("from E e join e.as as b where b.count=1").list(); t.commit(); s.close(); }
@Test @TestForIssue(jiraKey = "HSEARCH-1271") public void testPurgeWithNullAsIdDeletesAllIndexedDocuments() throws Exception { assertNumberOfIndexedEntitiesForTypes( 1, Tree.class ); assertNumberOfIndexedEntitiesForTypes( 4, Leaf.class ); FullTextSession fullTextSession = Search.getFullTextSession( openSession() ); Transaction tx = fullTextSession.beginTransaction(); fullTextSession.purge( Leaf.class, null ); tx.commit(); fullTextSession.close(); assertNumberOfIndexedEntitiesForTypes( 1, Tree.class ); assertNumberOfIndexedEntitiesForTypes( 0, Leaf.class ); }
@Test public void testObjectTypeFilteringSingleClass() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, Music.class ); List result = fullTextQuery.list(); assertEquals( "Should match the music only", 1, result.size() ); tx.commit(); fullTextSession.close(); }
@Test public void testCoalesce() { Session session = openSession(); Transaction txn = session.beginTransaction(); session.createQuery("from Human h where coalesce(h.nickName, h.name.first, h.name.last) = 'max'").list(); session.createQuery("select nullif(nickName, '1e1') from Human").list(); txn.commit(); session.close(); }
@Test public void testImplicitObjectTypeFiltering() throws Exception { Session session = openSession(); Transaction tx = session.beginTransaction(); FullTextSession fullTextSession = Search.getFullTextSession( session ); FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery ); List result = fullTextQuery.list(); assertEquals( "Should match all types", 3, result.size() ); tx.commit(); fullTextSession.close(); }
@Test public void testJdkEnumStyleEnumConstant() throws Exception { Session s = openSession(); s.beginTransaction(); s.createQuery( "from Zoo z where z.classification = org.hibernate.test.hql.Classification.LAME" ).list(); s.getTransaction().commit(); s.close(); }
@Test public void testBooleanProperty() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'term' : { 'active' : 'true' } } }" ); List<?> result = session.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.ID ) .list(); assertThat( result ).hasSize( 1 ); Object[] projection = (Object[]) result.iterator().next(); assertThat( projection[0] ).isEqualTo( 1L ); tx.commit(); s.close(); }
@Test public void testSimpleCaseStatementWithParamResult() { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery( "select case p.name when 'Steve' then :opt1 else p.name end from Person p" ) .setString( "opt1", "x" ) .list(); t.commit(); s.close(); }
@Test public void testStringMappedNumericProperty() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'puttingStrength' : '2.5' } } }" ); List<?> result = session.createFullTextQuery( query, GolfPlayer.class ) .setProjection( ElasticsearchProjectionConstants.ID, "puttingStrength" ) .list(); assertThat( result ).hasSize( 1 ); Object[] projection = (Object[]) result.iterator().next(); assertThat( projection[0] ).isEqualTo( 1L ); assertThat( projection[1] ).isEqualTo( 2.5D ); tx.commit(); s.close(); }
@Test public void testSave() { Session s = openSession(); Transaction transaction = s.beginTransaction(); try { s.save( new Company() ); s.getTransaction().commit(); } finally { s.close(); } }
@Test public void testGetResultSize() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); FullTextQuery fullTextQuery = session.createFullTextQuery( query, ScientificArticle.class ); assertThat( fullTextQuery.getResultSize() ).isEqualTo( 4 ); tx.commit(); s.close(); }
@Test public void testConcatenation() { // simple syntax checking... Session s = openSession(); s.beginTransaction(); s.createQuery( "from Human h where h.nickName = '1' || 'ov' || 'tha' || 'few'" ).list(); s.getTransaction().commit(); s.close(); }
@Test public void testNumericFieldQuery() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'range' : { 'wordCount' : { 'gte' : 8, 'lt' : 10 } } } }" ); List<?> result = session.createFullTextQuery( query ).list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Latest in ORM", "ORM for beginners" ); tx.commit(); s.close(); }
@Test public void testJoinFetchCollectionOfValues() { // note: simply performing syntax checking in the db Session s = openSession(); s.beginTransaction(); s.createQuery( "select h from Human as h join fetch h.nickNames" ).list(); s.getTransaction().commit(); s.close(); }
@Test public void testRestrictionByType() throws Exception { Session s = openSession(); FullTextSession session = Search.getFullTextSession( s ); Transaction tx = s.beginTransaction(); QueryDescriptor query = ElasticsearchQueries.fromJson( "{ 'query': { 'match' : { 'abstract' : 'Hibernate' } } }" ); List<?> result = session.createFullTextQuery( query, ResearchPaper.class ).list(); assertThat( result ).extracting( "title" ).containsExactlyInAnyOrder( "Very important research on Hibernate", "Some research" ); tx.commit(); s.close(); }