我在使用限制時遇到問題。我有一個表employee
已結構如下:如何使用裏面包含OR條件的AND SqlRestriction?
id : int (primary key)
create_date : datetime
modified_date: datetime
我用下面的代碼列出下來一名僱員,如果它的創建/一個特定的時間間隔內修改:
Criteria criteria = getSession().createCriteria(Employee.class);
criteria.add(Restrictions.eq("id", employeeId));
if (interval > 0) {
String sql = "{alias}.create_date > DATE_SUB(NOW(), INTERVAL " + interval + " SECOND) OR {alias}.modified_date > DATE_SUB(NOW(), INTERVAL " + interval + " SECOND)";
criteria.add(Restrictions.sqlRestriction(sqlWhere));
}
List<Employee> employeeList = criteria.list();
請注意, SqlRestriction內有一個OR條件。
現在假設employeeId = 10
和interval = 3600
,employeeList
包含其他員工以及id = 10,這不應該發生。
我應該用Restrictions.and
或Restrictions.conjunction
來解決嗎?或者我錯過了別的東西?
試試這個。 http://stackoverflow.com/questions/57484/how-do-you-or-criteria-together-when-using-a-criteria-query-with-hibernate –
@ user4246662:我在發佈之前已經經歷過。我看到這是關於OR'ing的限制! – blackSmith