@Override
public FriendBean findFriendBean(final FriendBean friendBean) {
// return (FriendBean) this.getHibernateTemplate().execute(
// new HibernateCallback() {
// public Object doInHibernate(Session session)
// throws HibernateException, SQLException {
// Query query = session
// .createQuery("FROM FriendBean f WHERE f.id.userid=? AND f.id.friendid=? AND f.id.groupid=?")
// .setParameter(0, friendBean.getId().getUserid())
// .setParameter(1, friendBean.getId().getFriendid())
// .setParameter(2, friendBean.getId().getGroupid());
// return query.uniqueResult();
// }
// });
return (FriendBean) this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(FriendBean.class);
// criteria.setProjection(Projections.count("userId"));
if(null!= friendBean){
if(null!=friendBean.getId().getUserid()){
criteria.add(Restrictions.eq("id.userid", friendBean.getId().getUserid()));
}
if(null!=friendBean.getId().getFriendid()){
criteria.add(Restrictions.eq("id.friendid", friendBean.getId().getFriendid()));
}
if(null!=friendBean.getId().getGroupid()){
criteria.add(Restrictions.eq("id.groupid", friendBean.getId().getGroupid()));
}
}
Object result = criteria.uniqueResult();
//criteria.setProjection(null);
return result;
}
});
}
分享到:
相关推荐
本篇文章将深入探讨Hibernate中的三种主要查询方式:HQL(Hibernate Query Language)、Criteria API以及原生SQL。 一、HQL(Hibernate Query Language) HQL是Hibernate提供的一种面向对象的查询语言,它类似于SQL...
**正文** ...在实际项目中,结合HQL和 Criteria 查询,以及Querydsl等工具,可以构建更加灵活和健壮的数据访问层。在进行HQL编程时,应注意避免SQL注入风险,合理使用命名参数,以确保代码的安全性。
- Hql支持常用的聚集函数,如`sum()`、`avg()`、`max()`、`min()`、`count()`,例如`String hql = "Select count(*) FROM User as user";`返回用户总数。 - 需要注意的是,`count()`返回的是`Long`类型,而其他...
String hql = "SELECT d.ename FROM Emp d WHERE d.hiredate BETWEEN :startDate AND :endDate"; List<String> names = session.createQuery(hql) .setParameter("startDate", "1981-01-01") .setParameter(...
3. 动态HQL:通过Criteria API或Query接口,可以构建动态的HQL查询,无需预先知道完整的查询语句。 4. 分页查询:使用setFirstResult和setMaxResults方法实现分页,如“query.setFirstResult(0).setMaxResults(10)...
9. **动态HQL**:在实际应用中,可能需要根据用户输入动态构建HQL,可以使用Criteria API或Querydsl等工具来实现。 10. **更新和删除**:HQL不仅用于查询,还可以用于更新和删除操作。例如,`update Student set ...
String hql = "select s.sdept, count(s) from Student s group by s.sdept order by s.sdept"; List[]> departmentCounts = session.createQuery(hql).list(); ``` 这里,`group by`语句用于按系别分组,`count(s)...
Hibernate提供`Criteria API`和`Querydsl`等工具,可以根据参数动态生成HQL,提高了代码的可维护性。 总之,Hibernate HQL是Java开发者处理数据库查询的强大工具,它以其面向对象的特性,降低了数据库操作的复杂度...
HQL遵循与SQL类似的语法结构,支持`select`、`where`、`in`、`like`、`between and`、`order by`、`group by`和`having`等语句块,同时提供`max`、`min`和`sum`等聚合函数。它对底层数据库透明,这意味着你可以在...
2. 子查询:可以在HQL中嵌套查询,例如`select u from User u where u.id in (select a.userId from Address a where a.city='上海')`,找出所有有上海地址的用户。 3. 排序:使用`order by`子句可以对查询结果进行...
**HQL语句查询详解** Hibernate Query Language (HQL) 是Hibernate框架中用于查询数据库的面向对象的语言。...在实际项目中,HQL和Criteria API都是常见的查询方式,根据项目需求和团队习惯可以选择合适的方法。
String hql = "select s.name ,avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); List[]> list = query.list(); ``` 这个HQL语句会返回每个学生名字及其平均年龄的列表。...
除了HQL之外,Hibernate还提供了Criteria API来进行查询。Criteria API是一种类型安全的API,可以提供更灵活的查询方式。 ```java Session session = HibernateUtil.getSession(); Criteria criteria = session....
HQL作为Hibernate的核心组成部分,不仅提供了与Criteria查询类似的面向对象封装,还具有更丰富的查询特性,使得复杂的查询操作变得简单易懂。 【HQL基本结构】 HQL查询语句主要包括以下几个部分: 1. `SELECT`:...
hql = hql.replaceFirst("SELECT", "UPDATE"); Query updateQuery = session.createQuery(hql); int updatedEntities = updateQuery.executeUpdate(); ``` 四、Hibernate 3.2.5版的改进 Hibernate 3.2.5是一个稳定...
String hql = "select s.name ,avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); list = query.list(); ``` 在上面的代码中,我们首先创建了一个 HQL 查询字符串,然后使用 `...
hql = "select age, count(*) from User group by age having count(*) > 10"; List[]> result = session.createQuery(hql).list(); ``` 5. **关联查询**:HQL可以轻松处理关联查询,通过`JOIN`关键字联合多个表。...
总的来说,Hibernate的HQL和Criteria查询提供了强大的数据操作能力,它们让开发者能够专注于业务逻辑,而不是底层的SQL细节,极大地提升了开发效率和代码质量。结合本地查询和性能优化策略,可以在Java应用中实现...
HQL支持类似于SQL的查询结构,如SELECT、FROM、WHERE、GROUP BY、ORDER BY等。以下是一些基本示例: - ** 查询所有实体 **:`from EntityName` - ** 基于条件查询 **:`from EntityName where property = value` - ...
HQL的全称是?...HQL语句为:select jd.jdid,jd.jd from TblJd jd。怎样获得并显示查询结果? 使用'?'做占位符的参数查询,怎样设置参数的值? 命名参数查询的语法是? 怎样创建Criteria查询对象?