如果数据库的 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 函数
1、在Oracle sequence首先创建sequence create sequence seq_id minvalue 1 start with 1 increment by 1 cache 20? 2.在你的hbm.xml中的配置 ? ? seq_id<SPAN>param>? generator>? id>? 这样再插入数据的时候,Hibernate会自动生成如下语句:...应用一:
String hql = "select count(*) from User as user"
Integer count = (Integer)getHibernateTemplate().find(hql).listIterator().next()
return count.intValue()
应用二:
String hql = "select count(*) from User as user"
return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue()
应用三:
String hql = "select count(*) from User as user"
Query query = getHibernateTemplate().createQuery( getSession(),hql)
return ((Integer)query.uniqueResult()).intValue()
select count(uu.userid) from T_Userinfo uu where uu.username like '%t%'T_Userinfo为实体类的类名uu.username为实体类中的成员变量的名字。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)