Ограничение в HQL с датой - PullRequest
       3

Ограничение в HQL с датой

2 голосов
/ 06 февраля 2011

У меня есть класс аукциона, как

public class Auction  extends LightEntity implements IsSerializable 
{
   private long AuctionId;
   private Date StartTime;
   private Date EndTime;
}

мне нужно выполнить запись hql, используя ограничение, которое выбирает все аукционы, время окончания которых еще не завершено.

мой файл сопоставления xml для класса аукциона

<hibernate-mapping>
    <class name="com.BiddingSystem.Models.Auction" table="AUCTION">
        <id name="AuctionId" type="long">
            <column name="AUCTIONID" />
            <generator class="native" />
        </id>
        <property name="StartTime" type="java.util.Date">
            <column name="STARTTIME" />
        </property>
        <property name="EndTime" type="java.util.Date">
            <column name="ENDTIME" />
        </property>
..
.
.
.
>

1 Ответ

6 голосов
/ 06 февраля 2011

Прежде всего, вы должны обязательно соблюдать соглашения об именах Java: переменные и поля начинаются с строчной буквы в Java (auctionId, startTime, endTime).

Теперь ваш вопрос: либо вы вычисляете текущее время и передаете его как параметр в свой запрос:

Date now = new Date();
Query q = session.createQuery("select a from Auction a where a.endTime > :now");
q.setTimeStamp("now", now);
return q.list();

или вы используете выражения, поддерживаемые HQL :

Query q = session.createQuery("select a from Auction a where a.endTime > current_timestamp()");
return q.list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...