William Pugh wrote:
When you form a Hibernate Disjunction criteria, but don't add any
clauses to it, you get a criteria that matches everything.

Here is my crack at it:

http://opensource.atlassian.com/projects/hibernate/browse/HHH-3583



I still maintain that adding empty Disjunction() in Critera API expression is a programming error. Empty Conjunction() only work by chance and this is because of the implicit enclosing Conjunction() due to the use of the add() method in the API like: critera.add(Expression.someexpr()).add(Expression.someexpr());

To prove this point (that historically it's a programming error) try using a mixture of empty Conjuction() (or empty Disjunction()) expressions inside other each other and see how soon you become unstuck.


resultList = s.createCriteria(Student.class)
  .add( Restrictions.disjunction()
    .add( Property.forName("studentNumber").gt( new Long(666) ) )
    .add( Property.forName("studentNumber").lt( new Long(102) ) )
      .add( Restrictions.disjunction()
        .add( Restrictions.disjunction() )
        .add( Restrictions.conjunction()
          .add( Restrictions.conjunction() )
          .add( Restrictions.conjunction() )
      )
    )
  )
  .addOrder( Order.asc( "studentNumber" ) )
  .list();

Hopefully the patch produces a good/better API.



Darryl
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to