`
log_cd
  • 浏览: 1089931 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Hibernate中的对象one-to-one关系

阅读更多
(1) 通过主健参考,限制2个数据表中的主健使用相同的值

create table CUSTOMER(
ID bigint not null auto_increment,
NAME varchar(15),
primary key (ID)
);

create table ADDRESS(
ID bigint not null auto_increment,
STREET varchar(128),
CITY varchar(128),
PROVINCE varchar(128),
primary key (ID)
);

Customer.hbm.xml:

<id name="Id" type="java.lang.Long" column="ID">
	<generator class="native"/>
</id>

<one-to-one name="address" 
            class="Address" 
            cascade="all"/>


Address.hbm.xml:

<id name="Id" type="java.lang.Long"	column="ID">
	 <generator class="foreign"> 
              <param name="property">customer</param> 
          </generator> 
</id>

<one-to-one name="customer" 
            class="Customer" 
            constrained="true"
            outer-join="false"/> <!--通过一个外键引用对主键进行约束-->


Customer cus = new Customer();
cus.setName("logcd");
Address add = new Address();
add.setCity("成都");
add.setProvince("四川");
add.setCustomer(cus);
cus.setAddress(add);
customerDao.save(cus);

(2)把many-to-one设置unique="true",则这时候的many-to-one实质上就是one-to-one

create table ADDRESS(
ID bigint not null auto_increment,
STREET varchar(128),
CITY varchar(128),
PROVINCE varchar(128),
primary key (ID)
);

create table CUSTOMER(
ID bigint not null auto_increment,
NAME varchar(15),
ADDRESS_ID bigint,
foreign key (ADDRESS_ID) references ADDRESS(ID),  
primary key (ID)
);

Customer.hbm.xml

<id
	name="Id"
	type="java.lang.Long"
	column="ID"
	>
	<generator class="native"/>
</id>

<many-to-one
	name="Address"
	class="Address"
	cascade="all"
	unique="true"
	>
	<column name="ADDRESS_ID"/>
</many-to-one>


Address.hbm.xml

<id
	name="Id"
	type="java.lang.Long"
	column="ID"
	>
	<generator class="native"/>
</id>

<one-to-one
	class="Customer"
	name="customer"
	property-ref="Address"
/>


Customer cus = new Customer();
cus.setName("jinming");
Address add = new Address();//如果是查询出来,unique="true",没作用???
add.setCity("chengdu");
add.setProvince("sichuan");
add.setCustomer(cus);
cus.setAddress(add);
customerDao.save(cus);

说明:hibernate的unique是给生成DDL的时候使用,所以需要检查下数据库的schema,那里加了unique约束才是有效的
MySQL:alter table your_table add unique (column_name)
分享到:
评论

相关推荐

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany讲解,代码示例,数据库示例!非常全面

    Hibernate学习笔记

    020 &lt;one-to-one&gt;、&lt;many-to-one&gt;单端关联上的 lazy(懒加载)属性 021 继承关联映射 022 component(组件)关联映射 023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形...

    Hibernate中文API大全

    这个时候你就应该考虑一下使用one-to-many关联是否会更恰当。 尝试对这个组合元素重新建模为一个实体-但是需要注意的是,虽然Java模型和重新建模前是一样的,关系模型和持久性语义会有细微的变化。 请注意如果你...

    hibernate3.2中文文档(chm格式)

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 ...

    Hibernate+中文文档

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 ...

    Hibernate中文详细学习文档

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 ...

    HibernateAPI中文版.chm

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 ...

    hibernate annotation 中文文档

    一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

    Hibernate 中文 html 帮助文档

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2....

    hibernate总结

    持久化类的对象,在hibernate应用中可以处于三种状态(根据对象和session之间的关系进行划分): 1. 临时态,瞬态:特点: a) 在数据库中没有记录和它对应 b) 和session没有任何关系 c) New 出来的对象,都处于临时...

    Hibernate Annotations 中文文档

    一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联关系获取 2.2.6. 映射复合主键与外键 2.2.7. 映射二级表...

    精通Hibernate:对象持久化技术第二版part3

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

    最全Hibernate 参考文档

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2....

    Hibernate3+中文参考文档

    21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值(Cascades and unsaved-value) 21.5. 结论 22. 示例:Weblog 应用程序 22.1. 持久化类 22.2....

    hibernate3.04中文文档.chm

    22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 ...

    Hibernate教程

    22.2. 双向的一对多关系(Bidirectional one-to-many) 22.3. 级联生命周期(Cascading lifecycle) 22.4. 级联与未保存值(Cascades and unsaved-value) 22.5. 结论 23. 示例:Weblog 应用程序 23.1. 持久化类 ...

    hibernate 体系结构与配置 参考文档(html)

    一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...

    hibernate 3中的缓存小结

    hibernate 3中的缓存小结 2.2. 一级缓存的管理: 当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或... &lt;one-to-many class="org.qiujy.domain.cachedemo.Product"/&gt; &lt;/hibernate-mapping&gt;

Global site tag (gtag.js) - Google Analytics