2015-07-02 2 views
0

, как должно быть, этот запрос в спящий режимSQL запросов Hibernate с пунктом, где

public Double getValuPrice(int param1, int param2){ 

     Query query = session.createQuery("FROM TableClass WHERE e.product= :param1 and e.type = :param2"); 
     query.setParameter("param1 ",param1); 
     query.setParameter("param2",param2); 

     result = query.uniqueResult(); 
     List lista = query.list(); 

     return lista; 
} 

и я хочу показать значение, возвращенное в Servlet

List list = classDao.getValuPrice(origem, destino); 

out.println("<h1>" + list.eq(0) + "</h1>"); 

ответ

0

В вашем запросе вы делаете from TableClass, а затем WHERE e.product = :param1. Я бы подумал, что это даст вам ошибку в строках Unable to resolve path [e.product], unexpected token [e]. Кроме того, у вас есть место для изгоев в одном из ваших параметров, что даст вам ошибку could not locate named parameter [param1 ].

Вы, однако, не нужен select * как предложил ответ Ленина (см Hibernate manual (v4.3 §11.4.1 "Executing Queries"))

Так исправляя эти:

  1. удалить пространство в "param1 "
  2. указать тип для result (и сделайте литье) - если result - поле, которое вы не указали в своем примере кода
  3. и, конечно же, удалить e. befo повторно свои свойства в запросе (или добавить e в качестве псевдонима для TableClass)
  4. Вы возвращаете List но метод задает Double - Я не уверен, что вы хотите сделать здесь, так что вам нужно работать, что вне себя.

код теперь выглядит

public Double getValuPrice(int param1, int param2){ 
    Query query = session.createQuery("FROM TableClass WHERE product= :param1 and type = :param2"); 
    query.setParameter("param1",param1); 
    query.setParameter("param2",param2); 
    // assuming result is a field with type TableClass  
    result = (TableClass)query.uniqueResult(); 
    List lista = query.list(); 

    return lista; // <-- fix the return statement 
} 

Если вы хотите вернуть определенную область на TableClass, который является Double (например double price;), то сделать:

Query q = session.createQuery("select price from TableClass WHERE product= :param1 and type = :param2" 
... 
Double result = ((Number) q.uniqueResult()).doubleValue(); 
+0

круто я учить новый вещи с вашим ответом, я уже исправляю ошибки и сейчас работаю :) –

0

Похоже вам не хватает ЗЕЬЕСТ и таблицы псевдонимов , Это должно быть как

Query query = session.createQuery("Select * FROM TableClass e WHERE e.product= :param1 and e.type = :param2"); 
Смежные вопросы