在hibernate中当遇到一个po在某一个po中作为属性存在时候,这个应该是一种关系,活动和员工,活动自身,存在以下关系.
3.1多对一关系,活动本身是自关联的,同时他和员工是个多对一的关系.一个员工可能创建多个活动.
<many-to-one
name="staff"
class="cattsoft.sxms.ejb.po.Staff"
not-null="true" >
<column name="CREATE_STAFF_ID" /
</many-to-one>
多对一关系,name属性指向一表的持久化类名称,class属性表示他的存储路径
<column name>中的name属性表示一方向表在多方向po中的外键属性.也就是两个表的关联属性.
3.2自关联关系,当为一对多关系的时候一方向的设置,由于一方向要存储多方向的对象集合所以设置的时候要用到<set>
<set
name="tasks"
lazy="true"
inverse="true"
>
<key>
<column name="PARENT_TASK_ID" />//表示一方向表的主键
</key>
<one-to-many
class="cattsoft.sxms.ejb.po.Task"//多方向的类路径
/>
</set>
<!-- bi-directional many-to-one association to Task -->
<many-to-one
name="task"
class="cattsoft.sxms.ejb.po.Task"
not-null="true"
>
<column name="PARENT_TASK_ID" />//表示外键名称
</many-to-one>
这个是设置了Task的自关联关系.
<o:p> </o:p>
<o:p> </o:p>
1. 在DAO中我们利用po查询信息的时候利用拼凑hql语句的方法来进行实现
String hql = " from Task as a where ";
<o:p> </o:p>
if ((task.getTaskId() != null) && (task.getTaskId().intValue() > 0)) {
hql += ("a.taskId = " + task.getTaskId() + " and ");
}
<o:p> </o:p>
if ((task.getRemarks() != null) && (!"".equals(task.getRemarks()))) {
hql += ("a.remarks='" + task.getRemarks() + "' and ");
}
<o:p> </o:p>
如果要利用当前po中的一个对象来进行查询的时候,为什么会出现一个对象呢?那是因为我们存在多对一的关系.
这个是活动执行计划表的映射文件的一部分
<o:p> </o:p>
活动执行计划表和活动表是多对一的关系.
<many-to-one
name="task"
class="cattsoft.sxms.ejb.po.Task"
not-null="true"
>
<column name="TASK_ID" />
</many-to-one>
<o:p> </o:p>
当我们要利用活动编号来进行查询活动执行计划的相关信息的时候!需要像以下方式来构造hql语句.
<o:p> </o:p>
if ((taskExecPlan.getTask()!= null) &&
(!"".equals(taskExecPlan.getTask().getTaskId()))) {
hql += ("a.task.taskId='" + taskExecPlan.getTask().getTaskId() + "' and ");
}
不知道为什么不可以利用
taskExecPlan.getTask().getTskId()!= null
来进行判空,一这样作就立马出错,好像是空指针吧!反正是一堆红的!晕!!!
分享到:
相关推荐
这些关系模型在Hibernate中通过注解或者XML配置文件进行定义,以实现Java对象和数据库记录之间的映射,从而实现对象的持久化。理解和熟练运用这些关系模型对于有效地设计和管理数据库应用程序至关重要。
### JPA与Hibernate的关系 #### 一、JPA概述 **Java Persistence API (JPA)** 是一种用于管理Java应用中的关系型数据库的标准API。它的主要目的是为了提供一套统一的、可移植的对象-关系映射(ORM)解决方案。JPA...
在IT行业中,Spring和Hibernate是两个非常重要的框架,它们分别专注于应用的依赖管理和持久层操作。本项目"Spring+Hibernate实现用户登录"旨在演示如何整合这两个框架,构建一个能够处理用户登录功能的Web应用程序。...
而Hibernate是一个对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作数据库,减少了SQL的编写工作,提高了开发效率。 实现用户注册功能时,通常需要以下步骤: 1. 创建实体类:首先,我们需要创建一个...
**标题解析:**“hibernate实现数据库表的多种关系” 在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式处理数据库操作。本示例着重于如何利用Hibernate来实现不同...
Hibernate是一个对象关系映射(ORM)框架,它可以将Java对象与数据库中的表进行映射,简化了数据库操作。在本项目中,Hibernate用于处理博客数据的存储和检索,包括用户信息、日志内容、评论等。通过定义实体类和...
以上就是关于Hibernate中实现多对一单向关联关系的基本知识,包括如何在实体类中定义关联、如何进行数据库操作以及如何查询关联对象。这个源代码示例应该提供了更具体的实现细节,你可以通过查看和运行它来深入理解...
Hibernate是一个开源的ORM框架,它提供了一种在Java应用中持久化对象到关系数据库的方式,通过消除手写SQL和JDBC代码,实现了Java对象和数据库记录之间的映射。Hibernate的核心组件包括配置文件、实体类、映射文件和...
通过这个教程,你可以了解到如何在MyEclipse环境中,结合Hibernate和Struts两大框架,实现一个完整的用户注册功能。这个过程涵盖了数据持久化、前端表单处理、业务逻辑实现等多个关键环节,对于理解和掌握Java Web...
在这个案例中,我们使用了Java服务器页面(JSP)作为视图层,Hibernate作为持久层框架来处理数据库操作,实现了留言板的功能。下面我们将深入探讨这两个技术及其在留言板应用中的具体应用。 **1. JSP(Java Server ...
在这个项目中,“struts2+hibernate+mysql实现注册登录”是一个基础的实战教程,旨在帮助新手理解如何在实际应用中整合这三个技术。 **Struts2** 是一个强大的MVC框架,它负责处理HTTP请求,控制应用程序的流程,并...
Hibernate不仅负责将Java对象映射到关系数据库中,还能够处理应用程序中的数据持久化需求。 标题“hibernate中文参考文档”意味着该文档是一份面向中文用户的Hibernate框架的参考资料,旨在为开发者提供详细的技术...
在本篇关于“在 Hibernate 中实现复杂的数据映射”的文章中,我们将深入探讨如何使用 Hibernate 框架处理不同类型的关联关系,包括一对一、一对多和多对多。这些关系在数据库设计中十分常见,而 Hibernate 提供了...
本练习主要涵盖了Hibernate中的关联关系,这是理解Hibernate核心概念的重要一环。 首先,我们需要理解什么是关联关系。在数据库设计中,关联通常指的是表与表之间的连接,例如一对一、一对多、多对一和多对多关系。...
在IT行业中,开发Web应用程序是常见的任务之一,而"hibernate+struts实现简单登录"就是一个典型的应用场景。这个项目使用了MyEclipse作为集成开发环境,Struts作为MVC框架,以及Hibernate作为对象关系映射(ORM)...
在这个案例中,"SpringMVC+Spring+Hibernate+Oracle 实现图书管理(CRUD)"是一个使用了四大主流Java技术栈的项目,分别是SpringMVC作为前端控制器、Spring作为应用层框架、Hibernate作为持久层框架,以及Oracle作为...
下面是一个简化的示例代码片段,展示了如何在Struts2和Hibernate中实现分页功能: ```java // PageTool类定义 public class PageTool { private int pageNum; // 当前页码 private int pageSize; // 每页显示记录...
在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系模型无缝对接。本篇文章将详细探讨 Hibernate 中的多种映射关系。 1. **一对一映射 (One-to-One)** 一对一映射表示两个...
### Hibernate框架ORM的实现原理详解 #### 一、ORM概念及意义 **ORM**,即**对象关系映射**(Object Relational Mapping),是一种程序...了解Hibernate的实现原理有助于更好地运用这一框架,解决实际开发中的问题。