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()
,则会产生意外的令牌错误。
答案 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();