`
- 浏览:
60681 次
- 性别:
- 来自:
北京
-
两张表:一张department表,一张employee表,建表语句如下:
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;
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
hibernate 多表查询 hibernate 多表不同于一般的sql嵌套查询,嵌套查询是不支持的,所以必须要配置好才能实现多表!只要配置好了,还是特别好用的
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。
通过对HBM映射文件的理解、DAO层的连表查询实现以及查询结果的处理等几个方面进行了详细解释。在实际项目中,合理运用这些技巧可以极大地提高开发效率和代码质量。需要注意的是,在编写连表查询时要充分考虑性能问题...
本文将深入探讨Hibernate中的多表查询技术,解析其背后的原理与实践方法,帮助开发者更好地掌握这一核心技能。 ### Hibernate多表查询概述 在现实世界的应用场景中,数据往往不会孤立存在,而是通过关联分布在多个...
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
在Hibernate中,多表查询通常涉及到关联关系的映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过这些关联,我们可以实现JOIN操作来获取多个表的数据。 1. 关联...
总之,Hibernate的多对多查询涉及实体类的定义、中间表的映射以及查询语句的编写。理解和熟练运用这些概念对于开发复杂的Java应用程序至关重要。在实际项目中,应根据业务需求灵活调整关联策略,确保数据的一致性和...
在本案例中,我们关注的是Hibernate中的多表查询,这是在处理复杂数据关系时常见的需求。 多表查询涉及到了三个或更多的表之间的关联,这在现实世界的业务场景中很常见,如学生信息与班级信息的关联。在Hibernate中...
本文将深入探讨如何通过配置优化Hibernate的多表查询,以提高应用的性能。 1. **联合查询优化**: 在进行多表查询时,Hibernate默认可能会生成多个单表查询,这会导致大量的数据库往返,降低效率。通过配置`@Join...
在Hibernate中,可以使用`Criteria` API或者`HQL`(Hibernate Query Language)来实现多表联查。`Criteria` API提供了更加面向对象的查询方式,通过`createCriteria()`方法指定主表,然后使用`createAlias()`方法...
本示例主要关注的是Hibernate中的多对多关联映射及其添加与查询方法。 多对多关联是数据库设计中的一种常见关系类型,指的是两个实体之间可以存在多个对应关系。例如,在学生与课程的关系中,一个学生可以选修多门...
总结,"Hibernate基于连接表的一对多单向关联"涉及到的主要知识点包括:数据库设计的一对多关系、Hibernate的实体映射、单向关联的配置、以及如何在Java代码中操作和查询这种关联。理解并熟练应用这些知识点,对于...
在Hibernate中,实现多对多关系需要通过关联表(也称为中间表或连接表)来完成。这个关联表通常包含两个外键,分别对应于两个参与关系的实体。以下是一个具体的步骤详解: 1. **定义实体类**:首先,为参与多对多...
标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...
"Hibernate-基础联表模板"是针对Hibernate中联表查询的一个实用工具,旨在帮助开发者快速地进行多表关联查询,而不必记住复杂的SQL语句。 1. **Hibernate简介** Hibernate是一种开源的ORM框架,它允许开发者将Java...
Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化为对Java对象的操作。Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 ...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
对于多表操作,Hibernate支持一对多、多对一、一对一和多对多等关联关系。通过注解或XML配置,可以定义表间的关联,例如`@ManyToOne`、`@OneToMany`、`@OneToOne`和`@ManyToMany`。在操作时,可以通过SessionFactory...
在多表映射中,Hibernate允许我们定义实体类之间的关系,如一对一、一对多、多对一和多对多关系。 在“一对多”关系中,一个实体可以对应多个其他实体。例如,一个部门可以有多个员工。在Hibernate中,我们通过在...
HQL是Hibernate的SQL方言,它是面向对象的查询语言,允许我们用类和对象的名字而不是表和列来写查询语句。HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的...