如果数据库的 datetime/date 之类的字段并没有和 Java 的 Date 或 Calender 属性进行映射的话,无论你使用 HQL 还是Criteria 都无法实现对日期的 *** 作,因为 HQL 和 Criteria 都是基于对象的查询方式。
基于对象的查询,如下,先做映射
@Entity
@Table(name="PREFERRED_CUSTOMER")
public PCustomer {
@Column(name = "EXPIRATION_DATE")
@Temporal(TemporalType.DATE)
protected java.util.Date expirationDate// only day, month, year
}
可以使用 HQL 这么查询:
List<PCustomer>list = session
.createQuery("from PCustomer pc where pc.expirationDate = :edate")
.setParameter("edate", new java.util.Date(), TemporalType.DATE)
.list()
hibernate 屏蔽了数据库特有的东西,是为了方便移植,但有的老项目较多地使用了数据库特有的东西,如MSSQL 的 T-SQL,这时,就需要使用 hibernate 对 SQL 的原生支持,Session 提供了 createSQLQuery() 这样的方法,此时的 hibernate 就相当于一个简单的 mapper,只提供对象关系映射,当然,一旦你在代码中使用了对 SQL 的原生支持,移植性就不好了。
此种方式可以使用你所说的 MySQL 函数
YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型 的值。1、使用4位字符串或数字表示,范围为’1901’—'2155’或1901—2155。例如,输人 ‘2019’或2019插人到数据库中的值均为2019。2、使用两位字符串表示,范围为’00’—‘99’。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)