Ответ 1
Вы пытались убежать от него:
SELECT * FROM employee WHERE NAME LIKE '%k\_p%';
\_
вместо _
.
_
(подчеркивание), заданное в запросе SQL
, не выполняется.
Пример:
SELECT * FROM employee WHERE NAME LIKE '%k_p%';
Это соответствует и выводит много строк из строк, содержащих k_p
Помог ли кто-нибудь помочь в достижении этого в SQL
, а также в Hibernate
? Спасибо.
Вы пытались убежать от него:
SELECT * FROM employee WHERE NAME LIKE '%k\_p%';
\_
вместо _
.
В MySQL Solution: select * from users where id like '%k_p%';
In Hibernate
Вот решение:
List<UserDTO> userDTOList = signUpBusiness.getUserDTODetails("k", "p");
Вызвать этот метод
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;
}
Другой способ переключить комментарий в методе выше:
MatchMode matchMode = MatchMode.ANYWHERE;
criteria.add(Restrictions.like("id", firstMatch, matchMode));
//criteria.add(Restrictions.like("id", "%"+firstMatch+"_"+secondMatch+"%"));
Я знаю, что уже поздно, но может быть решением для других программистов. Вы можете попробовать
SELECT * FROM employee WHERE NAME LIKE '%k[_]p%';