1.java 实体对象
package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA
/**
* TbAccount generated by hbm2java
* @author liuqing
*/
public class TbAccount implements java.io.Serializable {
private Integer id;
private TbPerson tbPerson;
private String name;
public TbAccount() {
}
public TbAccount(TbPerson tbPerson, String name) {
this.tbPerson = tbPerson;
this.name = name;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public TbPerson getTbPerson() {
return this.tbPerson;
}
public void setTbPerson(TbPerson tbPerson) {
this.tbPerson = tbPerson;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
2.实体对象
package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA
/**
* TbJws generated by hbm2java
* @author liuqing
*/
public class TbJws implements java.io.Serializable {
private Integer id;
private TbPerson tbPerson;
private String jwsname;
public TbJws() {
}
public TbJws(TbPerson tbPerson, String jwsname) {
this.tbPerson = tbPerson;
this.jwsname = jwsname;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public TbPerson getTbPerson() {
return this.tbPerson;
}
public void setTbPerson(TbPerson tbPerson) {
this.tbPerson = tbPerson;
}
public String getJwsname() {
return this.jwsname;
}
public void setJwsname(String jwsname) {
this.jwsname = jwsname;
}
}
package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA
import java.util.HashSet;
import java.util.Set;
/**
* TbPerson generated by hbm2java
* @author liuqing
*/
public class TbPerson implements java.io.Serializable {
private Integer id;
private String name;
private Set tbJwses = new HashSet(0);
private Set tbAccounts = new HashSet(0);
public TbPerson() {
}
public TbPerson(String name, Set tbJwses, Set tbAccounts) {
this.name = name;
this.tbJwses = tbJwses;
this.tbAccounts = tbAccounts;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Set getTbJwses() {
return this.tbJwses;
}
public void setTbJwses(Set tbJwses) {
this.tbJwses = tbJwses;
}
public Set getTbAccounts() {
return this.tbAccounts;
}
public void setTbAccounts(Set tbAccounts) {
this.tbAccounts = tbAccounts;
}
}
3. QBC 多表查询方法
public static void main(String args[]) {
Session session = new Configuration().configure().buildSessionFactory().openSession();
org.hibernate.Criteria criteria = session.createCriteria(TbPerson.class);
//对集合对象创建别名
criteria.createAlias("tbJwses", "a_jws");
criteria.add(org.hibernate.criterion.Restrictions.eq("a_jws.jwsname", "3"));
List list = criteria.list();
for (int i = 0 ; i < list.size(); i++) {
System.out.println("===" + ((TbPerson)list.get(i)).getName() + " id:" + ((TbPerson)list.get(i)).getId() );
}
}
4. HQL 语言的实现
List list = session.createQuery("SELECT p FROM TbPerson p inner join p.tbJwses j WHERE j.jwsname='3'").list();
for (int i = 0 ; i < list.size() ; i++) {
System.out.println(list.get(i).getClass());
}
分享到:
相关推荐
4. **Join操作**:在QBC中,可以方便地进行内连接(Inner Join)、左连接(Left Outer Join)以及其他类型的连接操作,以处理多表关联查询。 5. **子查询**:QBC允许我们在查询中嵌套其他查询,这在处理复杂的业务...
Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码
5. **关联查询**:使用createAlias()方法可以实现多表联查,例如`criteria.createAlias("associatedEntity", "alias")`,然后可以通过"alias.property"的方式引用关联实体的属性。 6. **子查询**:DetachedCriteria...
标题"Hibernate_QBC和Hibernate_QBE"提及了两个关于Hibernate的查询方式,即Query By Criteria(QBC)和Query By Example(QBE)。Hibernate是Java领域中一个广泛使用的对象关系映射(ORM)框架,它允许开发者以面向...
收录了QBC_hibernate完整用法.大家可以下载看看.作为参考.
然而,QBC在处理复杂的查询,如多表联接、子查询或者自定义SQL片段时,可能会显得力不从心,此时它的灵活性和表达能力相对较弱。 相对而言,HQL是一种面向对象的查询语言,类似于SQL,但更加面向对象。开发者可以...
总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...
Hibernate 提供了多种查询方式,包括 HQL(Hibernate Query Language)、QBC(Query By Criteria)和 JPA(Java Persistence API)的 Criteria API。这些查询语言提供了面向对象的方式来检索数据,比传统的 SQL 更加...
首先,HQL是Hibernate专门设计的一种面向对象的查询语言,它的语法类似于SQL,但更注重对象而非表。例如,如果我们有一个`User`实体,我们可以使用HQL来获取所有用户: ```java Session session = sessionFactory....
Hibernate QBC(Query By Criteria)查询是Hibernate框架中一种面向对象的查询方式,它通过提供Criteria API使得开发者能够更方便地构建和执行SQL查询。QBC查询的优势在于它允许程序员用更加面向对象的方式处理...
QBC是Hibernate提供的一种基于对象的查询方式,与HQL(Hibernate Query Language)类似,但更接近Java的API,允许我们根据对象的属性来构建查询条件。在进行分页查询时,QBC提供了`setFirstResult()`和`...
QBC查询方式的一个显著优点是其类型的检查性,可以减少运行时错误,同时也提供了更多的API来构造复杂的查询逻辑。 #### 总结 Hibernate的查询方式,特别是HQL和QBC,为Java开发者提供了强大而灵活的工具集,用以...
为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,或者使用第三方库如MyBatis的动态SQL功能。本文主要讨论使用XML配置和FREEMARKER的方法。 四、XML配置SQL 在Hibernate中,...
根据提供的文件信息,我们可以推断出此文档主要讨论了QBC(Query By Criteria)查询方法在Hibernate框架中的应用。下面将对文档中的几个关键点进行详细的解析与扩展。 ### QBC查询简介 QBC(Query By Criteria)是...
HQL提供了一种面向对象的查询方式,QBC和QBE则提供了更多灵活性,可以根据需求动态构建查询。同时,理解这些概念也有助于开发者更好地与其他Java ORM框架(如MyBatis)进行比较和选择。在学习和使用过程中,参考官方...
之前也发了一个,这个包含之前的,还添加了hibernate对数据库操作的代码(注意:controller层两个QBC/SQLTest代码不能运行,只是写出了操作数据库的除了HQL的另外2种方式)。我发现现在还是有很多公司用hibernate+...
HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活且强大的查询能力。下面将详细阐述这两种查询方式以及它们的查询条件。 **HQL(Hibernate Query ...
查询所有 // 2.条件查询 // 3.模糊查询 // 4.范围查询 // 5.排序查询(order by) // 6.分页查询 // 7.投影查询(只获取部分字段的结果) // 8.聚集函数使用(聚合函数)(count、sum、avg、max、min等) // 9.TOP N...
在本节中,我们将详细介绍 Hibernate 的查询机制和优化策略,包括 HQL、QBC 和 SQL 查询的使用和优化。 一、HQL 查询 HQL(Hibernate Query Language,Hibernate 查询语言)是 Hibernate 提供的一种查询语言,它...