drop table employee
create table EMPLOYEE
(
ID NUMBER(10) not null,
parentID number(10),
NAME VARCHAR2(20),
AGE NUMBER(3),
PASSWARD VARCHAR2(12),
CSRQ DATE,
PICTURE varchar(12),
primary key(id),
foreign key(parentID) references department(id)
)
drop table department
create table department
(
id number(10) not null,
dep_id varchar2(20),
dep_mc varchar2(20),
primary key(id)
)
其中,employee表中的parentID是department表的外键,department和employee表是一对多的关系,反过来是多对一的关系。怎么叫都可以。
Department.hbm.xml代码如下:
<hibernate-mapping>
<class name="com.dudeng.employee.hibernate.vo.Department"
table="DEPARTMENT" schema="DUDENG">
<id name="id" type="java.lang.Long">
<column name="ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">seq_department</param>
</generator>
</id>
<property name="dep_id" type="java.lang.String">
<column name="DEP_ID" length="20" not-null="false" />
</property>
<property name="dep_mc" type="java.lang.String">
<column name="DEP_MC" length="20" not-null="false" />
</property>
<set name="employees" inverse="true">
<key>
<column name="parentID" precision="5" scale="0"
not-null="true" />
</key>
<one-to-many
class="com.dudeng.employee.hibernate.vo.Employee" />
</set>
</class>
</hibernate-mapping>
Employee.hbm.xml的代码如下:
<hibernate-mapping>
<class name="com.dudeng.employee.hibernate.vo.Employee"
table="EMPLOYEE" schema="DUDENG">
<id name="id" type="java.lang.Long">
<column name="ID" precision="10" scale="0" />
<generator class="sequence">
<param name="sequence">seq_employee</param>
</generator>
</id>
<many-to-one name="department" class="com.dudeng.employee.hibernate.vo.Department">
<column name="parentID" precision="5" scale="0" not-null="true" />
</many-to-one>
<property name="name" type="java.lang.String">
<column name="NAME" length="20" not-null="false" />
</property>
<property name="age" type="java.lang.Long">
<column name="AGE" precision="3" scale="0" not-null="false" />
</property>
<property name="passward" type="java.lang.String">
<column name="PASSWARD" length="12" not-null="false" />
</property>
<property name="csrq" type="java.util.Date">
<column name="CSRQ" length="7" not-null="false" />
</property>
<property name="picture" type="java.lang.String">
<column name="PICTURE" length="20" not-null="false"/>
</property>
</class>
</hibernate-mapping>
查询结果集合:
List list = null;
String QueryStr = "from Employee emp,Department dep where emp.department = dep.id";
EmployeeBiz empbiz = EmployeeBiz.getInstance();
list = empbiz.find(QueryStr);
for (int i = 0; i < list.size(); i++)
{
Object[] obj = (Object[]) list.get(i);
for (int j = 0; j < obj.length; j++)
{
if (obj[j] instanceof Employee)
{
Employee emp = (Employee) obj[j];
System.out.print(emp.getName());
}
elseif (obj[j] instanceof Department)
{
Department dep = (Department) obj[j];
System.out.print(dep.getDep_mc());
}
}
System.out.println();
}
以上特别注意的地方:emp.department不能写成emp.parentID,我上网查了半天才找出原因的。开始写成emp.parentID了,后来改成emp.department程序运行正常了。
另外种方法
写个DocumentDetail对象,然后获得查询结果集合
select new com.cetc.bean.util.vo.DocumentDetail(da.contentid,dd.id,dd.filename,dd.filesource,dd.filesize,dd.mimetype,dd.author,dd.filepath) from DocumentDetail dd,ContentAttachment da where dd.id=da.documentid
构造函数一定要写好
public DocumentDetail(String contentid,String documentid,String fileName,String fileSource,Long fileSize,String mimeType,String author,String filePath){
this.contentid = contentid;
this.documentid = documentid;
this.fileName = fileName;
this.fileSource = fileSource;
this.fileSize = fileSize;
this.mimeType = mimeType;
this.author = author;
this.filePath = filePath;
}
分享到:
相关推荐
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
### Hibernate数据检索(HQL)知识点详解 #### 一、简介 Hibernate 是一款开源的对象关系映射(ORM)框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。本文档基于...
在实际开发中,HQL关联查询的应用场景非常广泛,特别是在需要跨多个实体进行数据检索的情况下。例如,在电子商务系统中,我们需要获取用户信息及其相关的订单信息时,就可以利用HQL关联查询来简化这一过程。此外,当...
### Hibernate基础:注解开发与检索 #### 一、Hibernate注解开发概述 **Hibernate**是一种流行的Java持久层框架,提供了对象关系映射(ORM)的功能,使得Java开发者能够更高效地进行数据库操作。注解作为Java SE 5...
1. **构建查询**:使用`FullTextSession`的`createFullTextQuery`方法,传入一个Lucene的查询字符串,生成一个全文检索查询。 2. **执行查询**:调用`List`或`ScoredResult`方法执行查询,并获取结果集。 3. **...
1. **第二级缓存**: Hibernate提供了二级缓存机制,可以存储已经查询过的对象,减少对数据库的访问。可以使用第三方缓存服务如EhCache或Infinispan。 2. **缓存策略**: 可以配置查询缓存,将查询结果缓存起来,避免...
标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...
### Hibernate的五种检索方式详解 #### 一、导航对象图检索方式 导航对象图检索是一种常见的对象关联查询方式。这种方式通常用于加载已经存在于内存中的对象,并通过这些对象访问与其关联的对象。例如,在一个订单...
这些查询语言提供了面向对象的方式来检索数据,比传统的 SQL 更加灵活和强大。 1. **HQL**:类似于 SQL,但它是面向对象的。例如,以下 HQL 查询语句用于获取所有学生: ```java Session session = ...
本人在厦门邦初培训时候 使用的快速入门精简文档 Session缓存的作用 Session清理缓存的时间点 对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。...本地SQL检索方式
关联级别检索策略是指当加载实体之间的一对多或多对多关联时,如何处理这些关联关系的加载。关联级别的检索策略主要关注于实体之间的关系加载,如一对多、多对多等。 ##### 1. Join Fetch(联合加载) - **定义**:...
本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
* from 子句:在 Hibernate 中实现数据库表中的数据查询。 * select 子句:选择将对象的属性返回到查询结果集中。 * where 子句:允许你将返回的对象的实例列表的范围缩小。 HQL 的应用示例: * 使用 HQL 检索对象...
在分页功能中,Hibernate3的Criteria API可以配合Pageable接口实现数据的分页检索。 在分页功能上,通常会有一个服务层(Service)方法,接受当前页码和每页数量,然后利用Hibernate3的Criteria API设置限制和偏移...
若要对查询结果进行排序,可以使用`Criteria` 的`addOrder()` 方法。例如,按价格降序排列: ```java Criteria criteria = session.createCriteria(Books.class); criteria.addOrder(Order.desc("price")); List...
Hibernate 是一个流行的 Java 持久层框架,它提供了多种检索数据的方式,包括导航对象图检索、OID 检索、HQL 检索、QBC 检索和本地 SQL 检索等。下面将详细介绍每种检索方式。 一、导航对象图检索 导航对象图检索...
【描述】:在ORM框架Hibernate中,数据查询和检索是一个核心功能,它提供了多种查询方式,包括标准化对象查询(Criteria Query)、Hibernate查询语言(HQL)和原生SQL查询。其中,HQL作为官方推荐的查询方式,具有...
使用hibernate search实现全文检索和文档管理功能: 1 全文检索 2 手动生成索引 3 文档上传(自动建立索引) 4 文档更新(自动建立索引) 5 文档删除 使用说明: 1 需要先恢复数据库 searchDB_2008sqlserver.bak 2 ...