2011-03-24 36 views
0

我必須使用AND/OR運算符來休眠分離標準查詢。如何在Hibernate中編寫和/或操作符?

SQL查詢是:

select *from tableName where col1='value1' and col2='value2' and (col3='value3' or col4='value3'); 

我覺得是這樣的:

DetachedCriteria criteria = DetachedCriteria.forClass(tableName.class) 
          .add(Property.forName("col1").eq(value1)) 
          .add(Property.forName("col2").eq(value2)) 
          ....????????); 

什麼是做到這一點的正確方法是什麼?

回答

2
criteria.add(Restrictions.or(Property.forName("col3").eq("value3"), 
          Property.forName("col4").eq("value3"))); 

是有用的,當你只有通過or連接兩個表達式(或and,與Restrictions.and)。

如果有兩個以上的表達式,然後用脫節或連詞:

Disjunction orExpression = Restrictions.disjunction(); 
orExpression.add(Property.forName("col3").eq("value3")) 
      .add(Property.forName("col4").eq("value3")) 
      .add(Property.forName("col5").eq("value3")); 
criteria.add(orExpression); 
+0

謝謝你救了我.... – 2011-03-24 12:10:51