HQL Выберите, используя дату в качестве критерия ошибки - PullRequest
2 голосов
/ 09 января 2011

В HQL я пытаюсь использовать дату в качестве критерия для получения некоторых данных, но получаю ошибку:

Код:

Date DatePlaced=new Date();
        auction.setDatePlaced(DatePlaced);
        auction.setUser((Users) getThreadLocalRequest().getSession(true).getAttribute("User"));
        UpdateDatabase(auction);
        Session session = gileadHibernateUtil.getSessionFactory().openSession();
        Long UserId=(Long) getThreadLocalRequest().getSession(true).getAttribute("UserId");
        String HQL="From Auction auction where User.UserId="+UserId +" and DatePlaced='"+DatePlaced+"'";
        Auction A1=(Auction) session.createQuery(HQL).list().get(0);


Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at com.BiddingSystem.server.ServiceImpl.UpdateAuction(ServiceImpl.java:543)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at net.sf.gilead.gwt.PersistentRemoteService.processCall(PersistentRemoteService.java:174)

То, что здесь происходит, в основном связанодата, но потому что данные не были найдены, потому что дата не совпадает, но данные, используемые для поиска, совпадают с датой, которую я установил выше, поэтому должна была быть возвращена 1 строка

1 Ответ

3 голосов
/ 09 января 2011

попробуйте использовать именованные параметры вместо создания запроса из строки

Auction A1=(Auction) session
           .createQuery("From Auction auction where User.UserId=:userId and DatePlaced=:placed")
           .setLong("userId",userId)
           .setDate("placed",placed)
           .list().get(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...