findByExample是一个很便利的查询的方法,通过传入的实例,进行条件匹配生成查询语句。
但之前一直很少用这个方法,原因是之前发现不知道什么情况下查询结果跟自己想要生成的不同。还是学习方式不同吧,对于陌生的东西出现问题了就不管不用了,这样是不行了。现在又遇到了,却很快的发现问题所在了。
原因其实很简单,findByExample只为example中的
基本类型属性生效,如果example的属性中有bean的话(一般有外键时就会出现了)就会无法转成SQL查询条件。甚至很多时候会产生where (1=1)的条件,相信会令人很迷惑。
解决办法很简单吧,遇到这种情况可以直接使用SQL或条件查询(Criteria),更推荐使用Criteria。
下面是查询参考:
@Override
public AppsAccount findByUserAndApp(Users user, Apps app) {
final DetachedCriteria query = DetachedCriteria
.forClass(AppsAccount.class);
Criteria criteria = query.getExecutableCriteria(getSession());
criteria.add(Restrictions.eq("users", user));
criteria.add(Restrictions.eq("apps", app));
@SuppressWarnings("unchecked")
List<AppsAccount> list = criteria.list();
if (list != null && !list.isEmpty()) {
return list.get(0);
}
return null;
}
因为是跟spring整合,所以用getSession()方法传入session。
AppsAccount.class类
public class AppsAccount implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 2255050572597512586L;
private String id;
private Users users;
private Apps apps;
private String account;
.....
分享到:
相关推荐
Eclipse上使用Hibernate synanize Eclipse上使用Hibernate synanize Eclipse上使用Hibernate Eclipse上使用Hibernate
hibernate 事务管理注意事项
myEclipse使用hibernate图解
Hibernate完整使用教程Hibernate完整使用教程Hibernate完整使用教程
在spring中使用Hibernate是平时项目中很常用的做法,下面就具体步骤进行
分别使用Hibernate和JDBC操作数据库
HibernateHQL级联注意事项[归类].pdf
Hibernate不得不注意的问题,以及Hibernate的数据源
使用hibernate封装方法,显现使用一个dao,service,impl来关联两个表的操作,实现,增删改查基本操作
由于以前的MySQL驱动在使用hibernate的时候遇到了一些问题所以希望将这个问题告诉大家,这个驱动在使用过的时候至今没有遇到什么问题
在Eclipse中使用Hibernate.pdf
今天研究了半天如何安装使用hibernate tools,整合了一下网上下载的资料,给大家看看
hibernate2 升级为hibernate3的需要注意的事项
使用Hibernate开发租房系统 (笔记)
JAVA 使用hibernate配置实例,包括普通java工程版本(不是web工程)和maven配置使用hibernate版本。
使用hibernate对sqlserver 2005进行增删改查
一个项目中同时使用hibernate和ibatis两个orm框架,既利用到了hibernate的强大功能也弥补到了hibernate对大数据操作的性能上的影响
一个简单是示例来描述: 使用Eclipse进行Hibernate开发
ACCP6.0+ 使用Hibernate开发租房系统910
* 注意:HQL中使用参数的方法: * 1.根据参数名称来设置参数:匹配名称; * 2.根据参数位置来设置参数:匹配位置; */ //根据参数名称来设置参数 Query query = session.createQuery("from UserManager u where u....