`
Kenny.Lee
  • 浏览: 515045 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于使用Hibernate findByExample的注意事项

阅读更多
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;

        .....
1
1
分享到:
评论

相关推荐

    Eclipse上使用Hibernate

    Eclipse 上使用 Hibernate Eclipse 上使用 Hibernate 是 Java 开发者常用的持久层解决方案。本文将指导您在 Eclipse 环境中使用 Hibernate,包括下载和安装 Hibernate、配置 Hibernate、生成实体类和 DAO 类、添加...

    hibernate 事务管理注意事项

    ### hibernate 事务管理注意事项 在使用Hibernate框架进行数据库操作时,事务管理是确保数据一致性和安全性的重要环节。本文将围绕“hibernate 事务管理注意事项”这一主题展开讨论,通过对给定文件中的标题、描述...

    hibernate使用参考文档

    Hibernate 使用参考文档 Hibernate 是一个流行的 Java持久层框架,它提供了一种对象关系映射(Object-Relational Mapping,ORM)机制,用于将 Java 对象与关系数据库之间建立映射关系。本文档旨在指导读者快速从 ...

    myEclipse使用hibernate图解

    ### myEclipse 使用 Hibernate 图解知识点详解 #### 一、集成 Hibernate 类库到 MyEclipse 项目 在 MyEclipse 中使用 Hibernate 开发时,首先需要将 Hibernate 的类库加入到项目中。具体步骤如下: 1. **添加 ...

    Hibernate需要注意的问题

    本文将探讨在使用Hibernate时可能遇到的问题,特别是关于数据源的配置。 首先,我们来理解什么是数据源。数据源是Java中用于存储和管理数据库连接的组件,它提供了一种池化连接的方式,可以提高系统资源的利用率,...

    如何安装使用hibernate tools

    【hibernate Tools】是Java开发中用于简化Hibernate框架使用的工具集,它为Eclipse提供了对Hibernate项目的集成支持。在本文中,我们将详细介绍如何安装和使用hibernate Tools,以便在开发过程中更高效地处理...

    JAVA 使用hibernate配置实例

    在使用Hibernate时,还需要注意以下几点: - 映射文件:可以使用XML文件(hbm.xml)或注解方式来定义实体类与数据库表的映射。 - 第二级缓存:为了提高性能,可以配置Hibernate使用第二级缓存,如Ehcache。 - JPA...

    Hibernate完整使用教程

    下面是关于 Hibernate 的详细知识点: Hibernate 介绍 Hibernate 是一个开源的持久层框架,它提供了一个抽象层来访问关系数据库。它允许开发者使用面向对象编程语言来访问关系数据库,从而简化了数据库交互的过程...

    如何使用Hibernate Tools生成Entity Bean

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式处理数据库操作。为了简化开发过程,Hibernate提供了一款名为Hibernate Tools的插件,这款插件集成了多种功能,...

    hibernate与mybatis一起使用取长补短

    标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...

    使用Hibernate开发租房系统3

    在本课程"使用Hibernate开发租房系统3"中,我们将深入探讨如何利用Hibernate这一强大的对象关系映射(ORM)框架来构建高效、灵活的租房管理应用。北大青鸟ACCP6.0 Y2 JAVA方向的课件与源代码相结合,为我们提供了一...

    Hibernate_Tools_for_Eclipse插件的安装和使用

    Hibernate_Tools_for_Eclipse插件的安装和使用 Hibernate_Tools_for_Eclipse插件是 Eclipse 中的一个插件,用于支持 Hibernate 开发。它提供了许多有用的功能,如Hibernate配置文件的创建、实体类的生成、SQL语句...

    使用Struts + Spring + Hibernate完成用户登陆笔记

    * 然后,使用Hibernate框架来实现数据持久化,例如使用Hibernate的createQuery方法来实现数据查询。 * 使用Struts框架来处理HTTP请求和响应,例如使用Struts的ActionMapping来实现请求映射。 * 使用Spring框架来实现...

    使用Hibernate开发租房系统910

    在本教程"使用Hibernate开发租房系统910"中,我们将深入探讨如何利用Hibernate来构建一个功能完备的租房系统。这个教程可能属于ACCP6.0+(北大青鸟的高级软件开发课程)的一部分,旨在帮助学员提升实际项目开发能力...

    使用Hibernate完成影院售票系统

    在这个“使用Hibernate完成影院售票系统”的项目中,我们将探讨如何利用Hibernate来构建一个完整的影院售票应用。这个项目可能是在北大青鸟的两年课程中的一个重要实践环节,旨在提升学员对数据库操作、对象关系映射...

    Hibernate Tools使用指南

    **Hibernate Tools使用指南** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提升开发效率,Hibernate提供了一系列的工具,即Hibernate Tools,帮助开发者进行逆向...

    java使用hibernate操作数据库jar

    Java使用Hibernate操作数据库是现代Java应用中常见的技术实践,...以上就是关于Java使用Hibernate操作数据库的基础知识,通过这些内容,开发者可以更好地理解如何在Java项目中利用Hibernate进行数据库的高效管理。

    使用 Hibernate Shards 对数据进行切分

    《使用Hibernate Shards对数据进行切分》 在大规模分布式系统中,数据库的扩展性问题一直是开发者关注的重点。Hibernate Shards是Hibernate框架的一个扩展,它提供了数据库分片(Sharding)的功能,帮助解决高并发...

Global site tag (gtag.js) - Google Analytics