1、 实体查询: 有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子: String hql=”from User user ”; List list=session.CreateQuery(hql).list(); 上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回。这里需要注意的是,hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的Employee实体对象,它有两个子类分别是Hour...
by qizhicong - Java - 2009-08-14 09:22:12 阅读(1616) 回复(0)
1、 实体查询: 有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子: String hql=”from User user ”; List list=session.CreateQuery(hql).list(); 上面的代码执行结果是,查询出User实体对象所对应的所有数据,而且将数据封装成User实体对象,并且放入List中返回。这里需要注意的是,hibernate的实体查询存在着对继承关系的判定,比如我们前面讨论映射实体继承关系中的Employee实体对象,它有两个子类分别是H...
约束 从以上可知,投影返回的是所有的数据。但在大多数时候我们并不需要这么多数据。这就需要对数据进行过滤。在hql中过滤数据的子句和SQL一样,也是where。它的语法类似于SQL,通过where子句,可以对行进行过滤。我们可以看看下面的SQL语句: select * from orders where id = ‘1234’ 这条查询语句返回了id等于1234的所有的字段。和这条SQL对等的是下面的hql语句: select o from Order o where o.id=’1234’ 从以...
传统的SQL语言采用的是结构化的查询方法,而这种方法对于查询以对象形式存在的数据却无能为力。幸运的是,hibernate为我们提供了一种语法类似于SQL的语言,hibernate查询语言(hql),和SQL不同的是,hql是一种面向对象的查询语言,它可以查询以对象形式存在的数据。因此,本文就hql如何工作以及如何使用hql展开了深入的讨论。 SQL本身是非常强大的。当SQL的这种强大和处理面向对象数据的能力相结合时,就产生了hql。和SQL一样,hql提...
引用 两个实体 Parent(P) 和 Child(C)之间是1:N的关系,现要求符合指定条件的P及所包 含的C 采用hibernate中的Criteria来实现此功能的代码如下: Java代码 Criteria criteria = this.getCriteria(Parent.class); //连接关联子对象child,且指定了连接方式为左外连接 criteria.createAlias("children", "c", CriteriaSpecification.LEFT_JOIN)); //下面三行代码是用于获取总的记录数 criteria.setProjection(...
以下是我的代码: [code] public LoginForm checkLogin(LoginForm lf) { try { SessionFactory sf = new Configuration().configure().buildSessionFactory(); session session = sf.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("select l from LoginForm as l where l.userName = LOGIN and l.password = PASSWORD "); Iterator results = query.iterate(...
下面列举一个完整的例子来说明hibernate对多个表进行关联查询(其中粗体是我们要特别注意的地方,相应表tBookInfo和BookSelection的结构和其对应的hbm.xml、class文件就不一一列举了,有需要详细了解的朋友,请联系我): String sTest = "from tBookInfo book, BookSelection sel where book.id = sel.bookId"; Collection result = new ArrayList(); Transaction tx = null; try { Session session = hibernateUtil.cur...
第 15 章 hql: hibernate查询语言 hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,hql是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。 15.1. 大小写敏感性问题 除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT 与 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等价于 org.hibernate.eg.Foo 并且...
以下是用hibernate的hql(面向对象的查询语言)实现模糊查询的3种方式,其中方式一是这三中方式中最理想的方式,至少方式一可以有效的防止由于查询条件中需要参数的增多导致的代码长度太长出现代码折行的情况(代码太长会给后期的维护和测试带来很大的不便)。但是还有比他更理想的方式,因为方式一在定义strSQL时使用String ,这就势必会造成当变量过多时strSQL自身太长的问题。一个比较有效的改进办法就是将String 改进为String...
hql:hibernate Query Language hql是完全面向对象的查询语言,因此可以支持继承和多态等特征。 hql查询依赖于Query类,每个Query实例对应一个查询对象,使用hql查询按 如下步骤进行: (1)获取hibernate Session对象; (2)编写hql语句; (3)以hql语句作为参数,调用Session的createQuery方法创建查询对象; (4)如果hql语句包含参数,调用Query的setXxx方法为参数赋值; (5)调用Query对象的list等方法遍历查询结果。 查询示例: pub...
hql:hibernate Query Language hql是完全面向对象的查询语言,因此可以支持继承和多态等特征。 hql查询依赖于Query类,每个Query实例对应一个查询对象,使用hql查询按 如下步骤进行: (1)获取hibernate Session对象; (2)编写hql语句; (3)以hql语句作为参数,调用Session的createQuery方法创建查询对象; (4)如果hql语句包含参数,调用Query的setXxx方法为参数赋值; (5)调用Query对象的list等方法遍历查询结果。 查询示...