- 浏览: 554100 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (251)
- UML/RUP/软件工程 (0)
- DDD:领域驱动设计 (1)
- IaaS/Paas/SaaS (1)
- Hadoop/YARN (10)
- PBDP项目 (2)
- OSGi-基础 (7)
- OSGi-Aries (2)
- OSGi-SpringDM (32)
- Oracle/MySQL/SS (8)
- Felix/Equinox/Bnd (14)
- Virgo Server/Gemini (7)
- Weblogic/JBoss/Tomcat (10)
- ActiveMQ (14)
- Camel (1)
- Spring Roo/Eclipse (7)
- Java/JSP/JSF (10)
- Maven (19)
- ESB-Mule (1)
- ESB-ServiceMix (18)
- SOA/SCA/SDO (12)
- WebService/RESTful (17)
- JS/jQuery/ExtJS (4)
- Spring/JPA/MVC (15)
- SpringSecurity (5)
- BPM/jBPM (3)
- Hudson/SVN/CI (0)
- LinuxOS/虚拟化 (25)
- Office/OpenOffice (1)
- 项目管理 (5)
- POI/jFreeChart (1)
最新评论
-
panamera:
请问JMS Transport 发布的webservice 是 ...
CXF 提供的Service Transport-JMS Transpor -
jianyi296:
where is attachment.
CXF WebService Dynamic Client -
hj01kkk:
您好,我用jdbc-user-service为什么每次验证时都 ...
SpringSecurity笔记3-Authenticating Users:Authenticaton Strategy -
wufenglin1231:
你好,我在实现Mapping exceptions to re ...
RESTful 异常处理 -
xchd:
[echo] Project: common
[echo ...
Hive安装配置学习笔记
三种实现方式,已顾客与房间的关系为例:
0. DB代码:
DROP TABLE IF EXISTS 'Customer';
CREATE TABLE 'Customer' (
'id int ( 11 ) NOT NULL auto_increment,
'name' varchar(255 ) NOT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS 'Room';
CREATE TABLE 'Room' (
'id' int ( 11 ) NOT NULL auto_increment,
'name' varchar(255 ) NOT NULL,
'customer_id' int ( 11 ) ,
foreign key (' customer _id') references customer('id'),
PRIMARY KEY ('id') ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1. 实体代码:
public class Customer implements java.io.Serializable {
private Integer id;
private String name;
private Room room;
//省略构造函数,get/set方法
}
public class Room implements java.io.Serializable {
private Integer id;
private String name;
private Customer customer ;
//省略构造函数,get/set方法
}
2. 通过外键方式实现:
Room.hbm.xml:
<hibernate-mapping>
<class name= "com.domain.Customer" table= "Customer" catalog= "Temp" >
< id name="id" type= "java.lang.Integer" >
<column name="id" />
<generator class = "native" />
</id>
<property name="name" type= "java.lang.String>
<column name="name" not- null = "true" />
</property>
<!-- class 可以不写,因为根据name的值computer(属性),会通过反射自动找到属于哪个类的 -->
<one-to-one cascade="all" name= "customer" class = "com.domain.Customer"
property-ref= " customer " >
</one-to-one>
</class >
</hibernate-mapping>
Customer.hbm.xml:
<hibernate-mapping>
<class name= "com.domain.Customer" table= "Customer" catalog= "Temp" >
<id name="id" type= "java.lang.Integer" >
<column name="id" />
<generator class = "native" />
</id>
<property name="name" type= "java.lang.String" >
<column name="name" not- null = "true" />
</property>
<!-- many开头的是代表该表持有外键 -->
<many-to-one name="rom" class = "com.domain.Room" unique= "true">
<column name=" customer _id" />
</many-to-one>
</class >
</hibernate-mapping>
3. 通过主键方式,即一个表的主键有另一个表的主键决定,本例中Customer表的主键由Room表决定:
Room.hbm.xml:
<hibernate-mapping>
<class name= "com.domain.Customer" table= "Customer" catalog= "Temp" >
< id name="id" type= "java.lang.Integer" >
<column name="id" />
<generator class = "native" />
</id>
<property name="name" type= "java.lang.String>
<column name="name" not- null = "true" />
</property>
<!-- class 可以不写,因为根据name的值computer(属性),会通过反射自动找到属于哪个类的 -->
<!--
<one-to-one cascade="all" name= "customer" class = "com.domain.Customer"
property-ref= " customer " >
</one-to-one>
-->
<one-to-one name="customer" class = "com.domain.Customer" cascade="all" >
</class >
</hibernate-mapping>
Customer.hbm.xml:
<hibernate-mapping>
<class name= "com.domain.Customer" table= "Customer" catalog= "Temp" >
<id name="id" type= "java.lang.Integer" >
<column name="id" />
<!--
<generator class = "native" cascade="all" />
-->
<!--Customer的主键由Room的主键决定,可以看成是外键-->
<generator class = "foreign" >
<param name="property" >room</param>
</generator>
<!--或者使用下面的方式-->
<generator class="increment"></generator>
</id>
<property name="name" type= "java.lang.String" >
<column name="name" not- null = "true" />
</property>
<!-- many开头的是代表该表持有外键 -->
<!--
<many-to-one name="rom" class = "com.domain.Room" unique= "true">
<column name=" customer _id" />
</many-to-one>
-->
<one-to-one name="rom" class = "com.domain.Room" />
<!--或者使用下面的方式-->
<one-to-one name="rom" class = "com.domain.Room" constrained="true" />
</class >
</hibernate-mapping>
4. 通过关系表实现:
create table room_cust(
room_id int not null ,
cust_id int not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
配置文件:
<!--optional= "true" 的意思是只有当room_id 和 cust_id 都不为空时才在关系表里插入。这样也会插入 2 遍,
所以需要inverse= "true" 把一方设置为虚的。即不让插入到关系表中-->
<join table=" room_cus t" optional= "true" inverse= "true" >
<key column="cust_id" />
<many-to-one name="room" column= "room_id" unique= "true" />
</join>
发表评论
-
异常:java.lang.IllegalStateException: getWriter() has already been called for this
2012-08-24 17:58 5078异常描述: java.lang.IllegalStateEx ... -
MyBatis动态传入表名,字段名的解决办法
2012-08-16 17:24 3245参考:http://luoyu-ds.iteye.com/bl ... -
通过MyBatis实现图片数据的存储 与读取
2012-08-13 17:39 7071开发环境: Mybatis:3.0.5 MySQL:5.x ... -
Quartz CronTrigger表达式完整配置说明
2012-07-25 18:29 1195考:http://www.blogjava.net/x ... -
SpringMVC3.1.1+Hibernate4.1.0
2012-04-11 22:07 0http://www.iteye.com/topic/1120 ... -
Hibernate常见误区——正确区分值对象和实体对象
2012-02-08 11:07 1283声明:该部分内容参考http://blog.csdn.net/ ... -
Hibernate/JPA常见异常分析与解决
2011-12-02 20:46 21711. ClassNotFoundException: org. ... -
JPA主键生成策略
2011-11-22 10:46 5958JPA默认提供了四种主键 ... -
J2EE @Autowired与Spring @Resource注解区别
2011-10-27 14:42 2089Spring不但支持自己定义的@Autowired注解 ... -
Spring中FrameMaker中文乱码
2011-10-25 13:30 13571. 模板文件 <!DOCTYPE html ... -
事务四大特征:原子性,一致性,隔离性和持久性(ACID)
2011-10-13 22:12 3130事务四大特征:原 ... -
WAR部署描述文件:web.xml
2011-09-18 12:21 14121. web.xml文件中的配置项 (1) Cont ... -
JPA与Hibernate的关系
2011-08-14 13:39 103891.JPA JPA全称: Java Per ... -
Hibernate集合映射配置
2011-07-22 14:24 16451. Set映射 <set name=&q ... -
Hibernate级联操作-cascade属性
2011-07-22 13:56 1985Hibernte中级联操作cascade属性选项: ...
相关推荐
在双向关联中,一方(通常是one-to-many的一方)需要通过`@OneToMany(mappedBy="")`来指定关联的另一方的属性,而另一方(many-to-one)则无需指定`mappedBy`,直接使用`@ManyToOne`即可。 4. 外键的处理 在one-to-...
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
在Hibernate中,一对一唯一外键关联映射可以通过 `<many-to-one>` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml <many-to-one name="idCard" column="card_id...
在Hibernate中,可以通过 `<many-to-one>` 或者 `<one-to-many>` 标签中的 `cascade` 属性来指定这种行为。 #### 代码示例解析 在提供的代码示例中,`<many-to-one>` 标签中包含了 `cascade` 属性的注释示例,但是...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...
对于`Department`,映射文件中会有一个`<class>`标签,其中包含`<set>`标签来定义员工集合,并且使用`<many-to-many>`或`<one-to-many>`标签来映射与`Employee`的关系。对于`Employee`,我们使用`<class>`标签,并在...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它用于表示两个实体之间一对一的映射关系。本篇将深入探讨Hibernate 3.2中的一对一关系,以及如何在实际项目中...
在Hibernate中,"one-to-one"(一对一)关联是一种常见的关系映射类型,表示两个实体之间存在一对一的对应关系,就像一个人只能有一个护照,或者一辆车只能属于一个人一样。 一、一对一关系的配置 1. **注解配置**...
`<set>`标签里的`<one-to-many>`子标签指定了与之关联的类。 在XML映射文件中,`Student.hbm.xml`包含了`<many-to-one>`元素,表示学生对象引用了一个班级对象,通过`classesid`列连接。而`Classes.hbm.xml`则使用...
一对一关联可以通过 `<one-to-one>` 标签实现。假设我们有 `Book` 和 `Author` 两个实体类,每个 `Book` 只有一个 `Author`。 ```java public class Author { private Long id; private String name; private ...
本篇文章将全面探讨Hibernate的关联映射学习,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)四种关系映射。 首先,一对一关联映射(One-to-One)是两个实体...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
本主题主要关注的是Hibernate中的一个关键概念——一对一(One-To-One)关联映射。一对一关联是两个实体之间的一种关系,其中每个实体最多只能与另一个实体的单个实例相关联。 ### 一对一关联的基本概念 一对一关联...
### Hibernate表关联关系详解 ...综上所述,无论是`many-to-many`还是`one-to-one`关联关系,在Hibernate中都可以通过相应的配置文件来实现。正确地理解和配置这些关联关系对于构建高效、可扩展的应用程序至关重要。
<one-to-many class="Order"/> ``` ```java @Entity public class User { @Id private Long id; private String name; @Fetch(FetchMode.JOIN) @OneToMany(mappedBy = "user") private List<Order>...
本篇文章将深入探讨Hibernate中的关联映射,特别是One-to-One(一对一)关联,这是一种表示两个实体之间一对一关系的映射方式。我们将通过源码分析和实际例子来理解其工作原理。 ### 一、One-to-One关联概述 在...
在数据库中,这通常表现为一对多(One-to-Many)的关系,但在对象模型中,由于我们是从一个对象的角度出发,所以称为Many-to-One。 在Hibernate中实现Many-to-One关联,我们需要在实体类中定义对应的属性,并通过...
在Java的持久化框架Hibernate中,一对一(One-to-One)关系映射是一种常见的实体关联方式。基于外键的One-to-One映射是其中的一种实现方式,它通过在一方或双方实体的表中添加外键来建立关联。接下来,我们将深入...