@Test public void testRestrictionsOnComponentTypes() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Restrictions.eq( "address", new Address( "London", "Lollard St" ) ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
@Test public void testIqFilter(){ openSession(); session.beginTransaction(); assertCount(3); session.enableFilter("iqRange").setParameter("min", 101).setParameter("max", 140); assertCount(1); session.getTransaction().commit(); session.close(); }
@Test public void testForIssue() { doInHibernate( this::sessionFactory, session -> { final org.hibernate.Filter enableFilter = session.enableFilter( "aliveOnly" ); enableFilter.setParameter( "aliveTimestamp", Timestamp.valueOf( "9999-12-31 00:00:00" ) ); enableFilter.setParameter( "deleted", true ); enableFilter.validate(); final Query query = session.createQuery( "select a.id from ArticleRevision as a " + "left join a.articleTradings as t " + "with ( (t.partyId = :p_0) and (t.classifier = :p_1) )" ); query.setParameter( "p_0", 1L ); query.setParameter( "p_1", "no_classification" ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); } ); }
@Test public void testSubqueryWithRestrictionsOnComponentTypes() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); final DetachedCriteria subSelect = DetachedCriteria.forClass( Student.class ); subSelect.setProjection( Projections.max( "age" ) ); subSelect.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Property.forName( "age" ).eq( subSelect ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
@Test public void testNonHumanFilter(){ openSession(); session.beginTransaction(); assertCount(3); session.enableFilter("ignoreSome").setParameter("name", "Homo Sapiens"); assertCount(0); session.getTransaction().commit(); session.close(); }
@Test public void testFilter() { try (Session session = openSession()) { Assert.assertEquals( Long.valueOf( 4 ), session.createQuery( "select count(u) from User u" ).uniqueResult() ); session.enableFilter( "ageFilter" ).setParameter( "age", 24 ); Assert.assertEquals( Long.valueOf( 2 ), session.createQuery( "select count(u) from User u" ).uniqueResult() ); } }
@Test public void testFilteredJoinedSubclassHqlDeleteRoot() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "delete Person" ).executeUpdate(); assertEquals( 2, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); }
@Test public void testFilteredJoinedSubclassHqlDeleteLeaf() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "delete Employee" ).executeUpdate(); assertEquals( 1, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); }
@Test public void testFilteredJoinedSubclassHqlUpdateLeaf() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "update Customer c set c.company = 'XYZ'" ).executeUpdate(); assertEquals( 1, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); } }
@Test public void testFilteredJoinedSubclassHqlUpdateRoot() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "update Person p set p.name = '<male>'" ).executeUpdate(); assertEquals( 2, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); }
@Test public void testFilteredJoinedSubclassHqlDeleteNonLeaf() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "delete User" ).executeUpdate(); assertEquals( 2, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); }
@Test public void testSubqueryWithRestrictionsOnComponentTypes2() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "active" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "id", STUDENT_ID ) ); final DetachedCriteria subSelect = DetachedCriteria.forClass( Student.class ); subSelect.setProjection( Projections.max( "age" ) ); subSelect.add( Restrictions.eq( "address", new Address( "London", "Lollard St" ) ) ); subSelect.add( Restrictions.eq( "id", STUDENT_ID ) ); query.add( Property.forName( "age" ).eq( subSelect ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); }
@Test public void testFilteredJoinedSubclassHqlUpdateNonLeaf() { Session s = openSession(); s.beginTransaction(); s.save( new Employee( "John", 'M', "john", new Date() ) ); s.save( new Employee( "Jane", 'F', "jane", new Date() ) ); s.save( new Customer( "Charlie", 'M', "charlie", "Acme" ) ); s.save( new Customer( "Wanda", 'F', "wanda", "ABC" ) ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); int count = s.createQuery( "update User u set u.username = :un where u.name = :n" ) .setString( "un", "charlie" ) .setString( "n", "Wanda" ) .executeUpdate(); assertEquals( 0, count ); s.getTransaction().commit(); s.close(); s = openSession(); s.beginTransaction(); s.createQuery( "delete Person" ).executeUpdate(); s.getTransaction().commit(); s.close(); }
@Test public void testSubquery() { doInHibernate( this::sessionFactory, session -> { final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "name", "dre" ) ); final DetachedCriteria inner = DetachedCriteria.forClass( Student.class ); inner.setProjection( Projections.min( "age" ) ); query.add( Property.forName( "age" ).eq( inner ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 1 ) ); }); doInHibernate( this::sessionFactory, session -> { session.enableFilter( "statusFilter" ).setParameter( "status", "deleted" ); final Criteria query = session.createCriteria( Student.class ); query.add( Restrictions.eq( "name", "dre" ) ); final DetachedCriteria inner = DetachedCriteria.forClass( Student.class ); inner.setProjection( Projections.min( "age" ) ); query.add( Property.forName( "age" ).eq( inner ) ); query.add( Restrictions.eq( "name", "dre" ) ); final List list = query.list(); assertThat( list.size(), is( 0 ) ); }); }
@Test public void testFetchEagerAndFilter() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); TestCourse test = new TestCourse(); LocalizedString title = new LocalizedString( "title in english" ); title.getVariations().put( Locale.FRENCH.getLanguage(), "title en francais" ); test.setTitle( title ); s.save( test ); s.flush(); s.clear(); Filter filter = s.enableFilter( "selectedLocale" ); filter.setParameter( "param", "fr" ); Query q = s.createQuery( "from TestCourse t" ); List l = q.list(); assertEquals( 1, l.size() ); TestCourse t = (TestCourse) s.get( TestCourse.class, test.getTestCourseId() ); assertEquals( 1, t.getTitle().getVariations().size() ); tx.rollback(); s.close(); }
public void testFiltersWithSubclass() { Session s = openSession(); s.enableFilter( "region" ).setParameter( "userRegion", "US" ); Transaction t = s.beginTransaction();
@Test public void testFiltersAreApplied() { doInHibernate( this::sessionFactory, session -> { session.enableFilter( "ID" ).setParameter( "id", 3L ); List result = session.createQuery( "from Customer order by id" ).list(); assertFalse( result.isEmpty() ); Customer customer = (Customer) result.get( 0 ); assertSame( customer.getCustomerId(), 3L ); assertSame( customer.getOrders().size(), 2 ); SessionStatistics statistics = session.getStatistics(); assertSame( statistics.getEntityCount(), 9 ); Statistics sfStatistics = session.getSessionFactory().getStatistics(); assertSame( sfStatistics.getCollectionFetchCount(), 1L ); assertSame( sfStatistics.getQueries().length, 1 ); } ); }
.unwrap( Session.class ) .enableFilter( "activeAccount" ) .setParameter( "active", true);
HQLQueryPlan plan1B = cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) ); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'F' ) ); HQLQueryPlan plan2A = cache.getHQLQueryPlan( "from Person", true, getEnabledFilters( s ) ); HQLQueryPlan plan2B = cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) ); HQLQueryPlan plan3B = cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) ); s.enableFilter( "sex" ).setParameter( "sexCode", Character.valueOf( 'M' ) ); HQLQueryPlan plan4A = cache.getHQLQueryPlan( "from Person", true, getEnabledFilters( s ) ); HQLQueryPlan plan4B = cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) );
.unwrap( Session.class ) .enableFilter( "firstAccounts" ) .setParameter( "maxOrderId", 1);