- 浏览: 1989244 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
这次介绍 还是以Person 和 Address 为例..
one to one 1对1 单向 主键关联.. 在一方关联另外一方,1对1,不能两方,同时拥有主键策略, 只能在一方设置为foreign 外键关联到另一方的主键.
下面是的具体代码:
Person_PK_One_to_One:
import java.io.Serializable; public class Person_PK_One_to_One implements Serializable{ private static final long serialVersionUID = -3370288005329889696L; private Integer id; private String name; private Integer age; private Address_PK_One_to_One addressPKOneToOne; //getter 和settter方法省略 }
Address_PK_One_to_One:
public class Address_PK_One_to_One implements Serializable{ private static final long serialVersionUID = -1281147151620979875L; private Integer addressID; private String addressDetail; //getter和setter方法省略; }
下面是Hibernate配置文件:
Person_PK_One_to_One.hbm.xml:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="pack.java.model"> <class name="Person_PK_One_to_One" table="PERSON_PK_ONE_TO_ONE"> <id column="ID" name="id" type="java.lang.Integer"> <!-- 这里主键 设foreign是因为,one to one的关联时,不能两个类,同时拥有自己的主键生成策略, 所以,在一方作为foreign,引用到另一方的主键即可。 --> <generator class="foreign"> <param name="property">addressPKOneToOne</param> </generator> </id> <property name="name" column="NAME"></property> <property name="age" column="AGE"></property> <!-- constrained="true" 表示,该类的主键由关联类生成。 --> <one-to-one name="addressPKOneToOne" constrained="true"></one-to-one> </class> </hibernate-mapping>
Address_PK_One_to_One.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="pack.java.model"> <class name="Address_PK_One_to_One" table="ZHT_ADDRESS_PK_ONE_TO_ONE"> <id name="addressID" column="ADDRESS_ID" type="java.lang.Integer"> <generator class="identity"></generator> </id> <!-- 地址详情 --> <property name="addressDetail" column="ADDRESSDETAIL" type="java.lang.String"></property> </class> </hibernate-mapping>
写好配置文件后,接下来在Hibernate.cfg.xml中加入 刚刚新建的两个Mapping映射文档.
<mapping resource="pack/java/model/Person_PK_One_to_One.hbm.xml"/>
<mapping resource="pack/java/model/Address_PK_One_to_One.hbm.xml"/>
之后,就新建一个Test类,
用来测试1对1 主键关联的映射关系.
package pack.java.test; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import pack.java.hibernate.HibernateSessionFactory; import pack.java.model.Address_PK_One_to_One; import pack.java.model.Person_PK_One_to_One; public class HibernateDemoOneTo_One { public static void main(String[]args){ HibernateDemoOneTo_One demoOneToOne = new HibernateDemoOneTo_One(); Session session = demoOneToOne.getSession(); //保存; demoOneToOne.savePersonAndAddress(session); //查询; demoOneToOne.queryPerson(session); } /** * 保存Person和Address; * @param session */ private void savePersonAndAddress(Session session){ Address_PK_One_to_One addressPKOneToOne = new Address_PK_One_to_One(); addressPKOneToOne.setAddressDetail("湖南省株洲市"); Person_PK_One_to_One personPKOneToOne = new Person_PK_One_to_One(); personPKOneToOne.setName("ZhouHaiTao"); personPKOneToOne.setAge(23); personPKOneToOne.setAddressPKOneToOne(addressPKOneToOne); //开启事务; session.beginTransaction().begin(); //保存操作; session.save(personPKOneToOne); System.out.println("保存成功!"); session.beginTransaction().commit(); //关闭session; session.close(); } /** * 查询Person对象和Address对象; * @param session */ private void queryPerson(Session session){ if(session!=null && !session.isOpen()){ session = HibernateSessionFactory.getSession(); } String hql="select p from Person_PK_One_to_One p where p.id = :pid"; Query query = session.createQuery(hql); query.setParameter("pid",1); List<Person_PK_One_to_One> list = query.list(); for (Person_PK_One_to_One personPKOneToOne : list) { System.out.println(personPKOneToOne.getId()+","+personPKOneToOne.getName()+","+personPKOneToOne.getAge()+","+personPKOneToOne.getAddressPKOneToOne().getAddressDetail()); } session.close(); } /** * 获取session; * @return */ private Session getSession(){ Session session = HibernateSessionFactory.getSession(); return session; } }
发表评论
-
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
Spring中二级缓存的配置
2011-12-18 20:40 22301.首先,在spring的hibernate配置里(app ... -
Hibernate 配置文件提示
2011-12-11 16:03 10311.这个则是hibernate.cfg.xml文件的头信息.. ... -
Hibernate中二级缓存的配置
2011-10-18 00:26 1256我们知道 hibernate的session提供了一级缓存, ... -
Hibernate 生成策略属性
2011-10-17 14:01 1011"assigned" 主键由外部程序负责生 ... -
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Syn
2011-10-16 18:37 2464Exception in thread "main& ... -
Hibernate缓存的分类
2011-10-16 11:25 1029Hibernate缓存分类: Session ... -
在Hibernate中使用日期函数获取数据库时间
2011-10-04 20:13 1671在Hibernate中使用日期函数获取数据库时间 ... -
Hibernate关联映射-one to one主键双向关联
2011-09-23 01:11 1315这次,继续上一次的实例。 记录1对1 主键双向关联. ... -
Exception in thread "main" org.hibernate.id.IdentifierGenerationException: attem
2011-09-23 00:46 2062今天在做Hibernate中1多1双向关联映射的实例时, ... -
Hibernate关联映射-one to one 外键双向关联.
2011-09-22 00:28 1168说明:双向一对一,是一对多的特例,只需要在多的一方设置成 ... -
Hibernate关联映射-many to many 外键单向关联.
2011-09-20 01:18 1450多对多的实例很多,这里说一个比较简单的例子,而且还是单向 ... -
Hibernate关联映射-many to one 外键单向关联
2011-09-18 00:25 1955多个人可以对应一个地址,也就是所谓的多对一关系,many to ... -
Hibernate关联映射-one to many外键单向关联
2011-09-15 01:14 4587以下是说明,1对多 单向外键关联 的实例.同样以person ... -
Hibernate关联映射-one to one单向外键关联
2011-09-13 22:00 1649Hibernate的关联关系很多,也非常的复杂. 常见的有 ... -
org.hibernate.TransientObjectException: object references an unsaved transient i
2011-09-12 19:02 1484org.hibernate.TransientObjectEx ... -
org.hibernate.PropertyAccessException: Exception occurred inside getter of pack.
2011-09-12 18:54 6124报如下,异常是因为,在Person对象中.设置的属性类型 ... -
org.hibernate.MappingException: could not instantiate id generator
2011-09-10 14:32 2474在搭建Hibernate的环境时, ... -
配置hibernate.properties 或 hibernate.cfg.xml 文件时,在配置JDBC连接参数时,要配置数据库方言
2011-09-10 13:04 1931各数据库的方言 (配置 hibernate.cfg.xml 时 ... -
java.sql.SQLException: ORA-01747: user.table.column, table.column 或列说明无效
2011-08-17 11:53 7190今天,使用Hibernate框架,做映射时,添加数据时, ...
相关推荐
接下来是“多对一”(Many-to-One)映射,与一对多相反,一个子实体可以关联到多个父实体。例如,多个订单可以属于同一个客户。`hibernate_many2one`的案例可能展示了如何在子类中使用`@ManyToOne`注解来指定与父类...
在 Hibernate 映射中,需要使用 `one-to-one` 元素,并设置 `constrained="true"`,表明该类的主键由关联类生成。 3. Hibernate 一对一连接表单向关联: 这种关联方式是通过额外的连接表来实现一对一关系的。连接...
关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...
实体关联关系映射涉及一对一、一对多、多对多等多种形式,而这些映射方式又可以分为单向和双向,依据使用的是主键还是外键,以及是否使用连接表。接下来,我们详细介绍这些知识点。 ###Hibernate实体关联关系映射...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...
-- 用来映射关联PO,必须为one-to-one元素增加constrained="true"属性 --> <one-to-one name="address" constrained="true"/> </hibernate-mapping> ``` --- ##### 3. 一对一连接表单向关联 在一对一连接表单...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的实现。在这个案例中,我们将详细解析`hibernate_one2onepk2`的压缩包文件,了解如何设置和操作这种关联。 一对一...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的对应关系。本篇主要探讨的是基于主键(Primary Key)的双向关联映射,这在实际项目中非常常见...
本教程聚焦于一对一(One-to-One)单向主键关联,这是一种特定类型的关系映射,其中一个实体类完全依赖于另一个实体类的主键。这里的"单向"意味着只有一个实体类知道这种关联,而另一个实体类并不包含对应的引用。 ...
在Java的持久化框架Hibernate中,一对一(One-to-One)映射是一种常见的关系映射方式,它用于表示两个实体之间一对一的关联关系。在这种关系中,一个实体对应另一个实体的唯一实例。本实例将深入探讨如何在Hibernate...
综上所述,Hibernate提供了丰富的关联关系映射机制,包括一对一、一对多和多对多关联,每种关联又可以细分为单向和双向,以及基于主键和基于外键的不同实现方式。正确理解和选择合适的关联关系对于构建高效、可维护...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联关系是常见的一种实体关系映射。本主题将深入探讨如何使用Hibernate通过主键来实现一对一的单向关联关系,并提供相关的源码分析。 首先,我们需要理解一对...
在Person类中添加`private Address address`属性,并在`person.hbm.xml`中配置`<many-to-one>`元素,如`<many-to-one name="address" cascade="all" class="Address" column="address_id"/>`。这表示Person表中的...
单向关联意味着只从一个方向访问关联对象,例如,只需要从Course对象获取任教的Teacher对象,那么只需在Course.hbm.xml中添加`<many-to-one>`标签,指定Teacher类和column属性(teacher_id)。如果需要从Teacher对象...
- 多方配置文件中添加`<many-to-one>`标签,表示多方与一方之间的关联。 ```xml <many-to-one name="一方对象作为属性的名称" class="一方类包括了路径的" column="一方主键id" not-null="true"/> ``` 3. **...