2015-10-07 2 views

ответ

1

Я на самом деле довольно смущен. Вы говорите, что класс сущности называется PersonEntity.java, и все же ваш запрос HQL выбирается из Operson.

В HQL вы запрашиваете объект Java, а не фактическую таблицу. Во всяком случае, я предполагаю, что ваша Сущность называется Operson. Вот правильный код:

public List<Operson> searchPerson(String keyword) { 
    try { 
     String HQL = "SELECT o FROM Operson o WHERE o.opusername like :username OR o.opname like :name"; 
     return em.createQuery(HQL) 
      .setParameter("username", "%" + keyword.toUpperCase() + "%") 
      .setParameter("name", "%" + keyword.toUpperCase() + "%") 
      .getResultList(); 

    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

Примечание:

  1. При использовании параметров, не включают подстановочные символы в вашем HQL запросе. Вы используете подстановочные знаки, когда вы устанавливаете фактические параметры с помощью setParameter().
  2. Ваш метод должен возвращать List
+0

привет, я поставил в неправильное имя должно быть OPerson.java вместо PersonEntity.java. Я внес изменения. Что делать, если я хочу получить запрос: public List searchPerson (ключевое слово String) {}. как я должен это сделать? – susu

+0

У вас есть 2 параметра в вашем запросе, поэтому я подумал, что вам нужно также 2 параметра в вашем методе. Что конкретно вы хотите сделать с параметром ключевого слова? Будет ли передано то же ключевое слово в имя пользователя и параметры пользователя в вашем запросе? – Ish

+0

да. использование ключевого слова для передачи имени пользователя и параметра пользователя в моем запросе. это то, о чем я смущаюсь. Я знаю, что когда передано 2 параметра, тогда я должен поместить 2 параметра в свой метод. Что делать, если я использую ключевое слово для передачи 2 параметров (имя пользователя и имя)? – susu

Смежные вопросы