Trong giải pháp MySQL: select * from users where id like '%k_p%';
In Hibernate
Dưới đây là giải pháp:
List<UserDTO> userDTOList = signUpBusiness.getUserDTODetails("k", "p");
Gọi phương pháp này
public List<UserDTO> getUserDTODetails(String firstMatch, String secondMatch) {
List<UserDTO> userDTOList = new ArrayList<UserDTO>();
Session session = null;
try {
session = SessionFactoryFpf.getCurrentSession();
Criteria criteria = session.createCriteria(User.class);
//MatchMode matchMode = MatchMode.ANYWHERE;
//criteria.add(Restrictions.like("id", firstMatch, matchMode));
criteria.add(Restrictions.like("id", "%"+firstMatch+"_"+secondMatch+"%"));
List<User> userList = criteria.list();
if (userList.size() > 0) {
for (User user : userList) {
UserDTO userDTO = new UserDTO();
userDTO.setId(user.getId());
userDTO.setDob(user.getDob());
userDTO.setFullName(user.getFullName());
userDTO.setGender(user.getGender());
userDTO.setEmail(user.getEmail());
userDTOList.add(userDTO);
}
}
} catch (Exception e) {
e.printStackTrace();
LOG.error("Type of exception occured in getUserDTODetails() is --> "+e);
} finally {
SessionFactoryFpf.closeSession(session);
}
return userDTOList;
}
Một cách khác chuyển đổi nhận xét trong phương pháp trên:
MatchMode matchMode = MatchMode.ANYWHERE;
criteria.add(Restrictions.like("id", firstMatch, matchMode));
//criteria.add(Restrictions.like("id", "%"+firstMatch+"_"+secondMatch+"%"));
Bạn có thể chỉ định một ký tự [ESCAPE] (http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like). Ví dụ LIKE '% k | _p%' ESCAPE '|' . – wisefish