`
qingzuochen
  • 浏览: 271681 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate的参数绑定

阅读更多
参数绑定:
都支持位置绑定和命名绑定,
如:
session.createQuery("from Person where id=:id").setInteger("id",1);
session.createQuery("from Person where id=?").setInteger(0,1);


基本的参数绑定:
setString()
setInteger();
等...


特殊的参数绑定
(1)setEntity()
Customer customer = new Customer();
customer.setId(1);
session.createQuery("from Order o where o.customer =:customer ").setEntity("customer", customer);

  等价于
session.createQuery("from Order o where o.customer.id =:customerid ").setInteger("customerid", 1);

(2)setParameter()
Query query = session.createQuery("from Order o where o.customer=:customer and o.orderNumber like :orderNumber");
query.setParameter("customer", customer, Hibernate.entity(Customer.class));

query.setParameter("orderNumber", orderNumber, Hibernate.STRING);
setParameter()方法的第三个参数显示指定Hibernate映射类型.以下代码用于绑定一个客户化映射类型.(关于客户化映射类型,参见:http://www.iteye.com/topic/182797)
Query query = session.createQuery("from Customer c where c.homeAddress=:homeAddress");
query.setParameter("homeAddress",homeAddress,Hibernate.custom(AddressUserType.class));

  对于某些参数,Hibernate能跟根据参数值的Java类型推断出对应的映射类型,此时不需要在setParameter()方法中显式指定映射类型,如:
Query query = session.createQuery("from Order o where o.customer=:customer and o.orderNumber like :orderNumber");
query.setParameter("customer", customer);
query.setParameter("orderNumber", orderNumber);

  对于日期类型,如java.util.Date类型,会对应多种Hibernate映射类型,如Hibernate.DATE或Hibernate.TIMESTAMP,因此必须在setParameter()方法中显式指定到底对应哪种Hibernate映射类型,如:
Query query = session.createQuery("from Customer c where c.birthday=:birthday");
query.setParameter("birthday",birthday,Hibernate.DATE);

(3)setProperties()方法:用于把命名参数与一个对象的属性值绑定,如:
Customer customer = new Customer();
customer.setName("Tom");
customer.setAge(21);
Query query = session.createQuery("from Customer as c where c.name=:name and c.age="age");
query.setProperties(customer);

  setProperties()调用setParameter()方法,setParameter()方法再根据Customer对象的属性的Java类型来推断Hibernate映射类型.如果命名参数为日期类型,不能通过setProperties()方法来绑定.
  参数绑定对null是安全的.
分享到:
评论

相关推荐

    Hibernate教程

    绑定参数 11.4.1.5. 分页 11.4.1.6. 可滚动遍历(Scrollable iteration) 11.4.1.7. 外置命名查询(Externalizing named queries) 11.4.2. 过滤集合 11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的...

    Hibernate 高级配置

    3)、参数绑定 4)、setParameter()方法,绑定任意类型的参数 5)、setProperties()方法,把命名参数与一个对象的属性值绑定 3. Hibernate基础配置 4. commons DBCP 配置说明 5. Hibernate的缓存机制介绍 6. ...

    Hibernate 简单使用 hibernate, ppt

    实体对象识别 PO与VO Hibernate持久化实现 数据加载方式 Ms-jdbc异常处理 参数绑定

    Hibernate+中文文档

    3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的...

    hibernate3.2中文文档(chm格式)

    3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的...

    HibernateAPI中文版.chm

    3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中调用函数  17.2 设定查询条件  17.2.1 比较运算  17.2.2 范围运算  17.2.3 ...

    Hibernate实战(第2版 中文高清版)

     5.3.6 参数化定制类型   5.3.7 映射枚举   5.4 小结   第6章 映射集合和实体关联   6.1 值类型的set、bag、list和map   6.1.1 选择集合接口   6.1.2 映射set   6.1.3 映射标识符bag   6.1.4 映射...

    hibernate 实践 Query详解

    帮助学生理解掌握使用Query接口的绑定参数的使用方式及其含义

    Hibernate 中文 html 帮助文档

    绑定参数 10.4.1.5. 分页 10.4.1.6. 可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 ...

    最全Hibernate 参考文档

    绑定参数 10.4.1.5. 分页 10.4.1.6. 可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 ...

    Hibernate中文详细学习文档

    3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的...

    hibernate 体系结构与配置 参考文档(html)

    绑定参数 10.4.1.5. 分页 10.4.1.6. 可滚动遍历(Scrollable iteration) 10.4.1.7. 外置命名查询(Externalizing named queries) 10.4.2. 过滤集合 10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的...

    Hibernate Validator校验参数疑点难点方法详解.docx

    为了解决上面的痛点,将验证逻辑与相应的领域模型进行绑定是十分有必要的。为此产生了JSR 303 – Bean Validation 规范。Hibernate Validator 是 JSR-303 的参考实现,它提供了 JSR 303 规范中所有的约束...

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @Entity ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的...

    Hibernate3的帮助文档

    绑定参数 11.4.1.5. 分页 11.4.1.6. 可滚动遍历(Scrollable iteration) 11.4.1.7. 外置命名查询(Externalizing named queries) 11.4.2. 过滤集合 11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中调用函数  17.2 设定查询条件  17.2.1 比较运算  17.2.2 范围运算  17.2.3 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     17.1.12 在HQL查询语句中绑定参数  17.1.13 设置查询附属事项  17.1.14 在映射文件中定义命名查询语句  17.1.15 在HQL查询语句中调用函数  17.2 设定查询条件  17.2.1 比较运算  17.2.2 范围运算  17.2.3 ...

Global site tag (gtag.js) - Google Analytics