# DetachedCriteria和Criteria的使用方法 Criteria 和 DetachedCriteria 的主要區別 在於建立的形式不一樣, Criteria 是線上的,所以它是由 Hibernate Session 進行建立的,而 DetachedCriteria 是離線的,建立時無需Session ## 使用方法: **Example SQL:** **select * from Student where Name = 'Camiol' and (DeleteFlag <> 'Y' or DeleteFlag is null) order by EntryDate desc** ## DetachedCriteria: ```java= //DetachedCriteria 版 @Override public List<Student> findStudentByName(String name){ List<Student> resultList = null; if(StringUtils.isNotBlank(name)) { DetachedCriteria dc = DetachedCriteria.forClass(Student.class); dc.add(Restrictions.eq("name",name)); dc.add(Restrictions.or(Restrictions.ne("deleteFlag","Y"),Restrictions.isNull("deleteFlag"))); dc.addOrder(Order.desc("entryDate")); resultList = dc.getExecutableCriteria(getSession()).list(); } return resultList; } ``` ## Criteria ```java= //Criteria 版 @Override public List<Student> findStudentByName(String name) throws Exception{ Session session = getSession(); List<Student> resultList = null; if(StringUtils.isNotBlank(name)) { try { Criteria criteria = session.createCriteria(Student.class); criteria.add(Restrictions.eq("name",name)); criteria.add(Restrictions.or(Restrictions.ne("deleteFlag","Y"),Restrictions.isNull("deleteFlag"))); criteria.addOrder(Order.desc("entryDate")); resultList = criteria.list(); }finally { session.disconnect(); } } return resultList; } ``` ###### tags: `hibernate`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up