如何将sql查询写入hibernate

时间:2018-04-27 09:19:48

标签: java hibernate

id   name     date
1.   ask    2018-04-25 12:30:59
2.   msk    2018-04-25 12:40:43
3.   sdf    2017-05-25 12:42:34

id=int---->in java id-->int
name=varchar(25)----> in java name-->string
date=datetime------->in java date--->Timestamp

my sql query=select * from table where year(date)='2018';

o/p:1.   ask    2018-04-25 12:30:59
    2.   msk    2018-04-25 12:40:43
select * from table where month(date)='05'
o/p:3.   sdf    2017-05-25 12:42:34


please help me i dont know 
how to write this query in hibernate 

如何在hibernate中编写上述查询?我尝试了很多东西,但我没有得到任何解决方案。如果我在休眠中使用to_char(),则会产生意外的令牌错误。

2 个答案:

答案 0 :(得分:1)

您不必使用to_char()函数。 Hibernate支持年份和日期函数。

请参阅此链接:https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html 并查看“14.10。表达”。

所以你的hql看起来就像这样:

select t from table t where YEAR(t.date)='2018';

and select t from table t where MONTH(t.date)='05';

答案 1 :(得分:0)

此处无需使用to_char()方法。你可以在你的Dao实现类中使用这个查询。

多年:

session.createSQLQuery("select * from table where year(date) = :year")
       .setParameter("year",2018)
       .list();

for Months

session.createSQLQuery("select * from table where month(date) = :month")
       .setParameter("month",05)
       .list();