hibernate中的one to one

eastcfd 2009-04-24 10:03:56
请问如何在myeclipse中进行one to one的配置 我建了半天不是关联不起来,就是one to many的,请问有选择配成one to one的吗?向大家请教。
...全文
456 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy8211 2009-06-01
  • 打赏
  • 举报
回复
通过Hibernate Reverse Engineering生成po,怎么能自动设置one-to-one的关系的,有没有其他工具能生成hibernate3的pojo的
HSSASJ 2009-04-27
  • 打赏
  • 举报
回复
一對多:
部門(Department)和員工(Employee)的關系。
1)Department的映射文件配置:
<class name="Department" table="t_department">
<id name="id" column="d_id">
<generator class="increment"></generator>
</id>

................
<set name="employees" inverse="true" cascade="save-update"> //employees是Department中的关系属性。
<key column="dept_id"></key> //外键列
<one-to-many class="Employee"/> //关联实体
</set>
</class>
2)Employee的映射文件配置:
<class name="Employee" table="t_employee">
<id name="id" column="e_id">
<generator class="increment"></generator>
..................

<many-to-one class="department" column="dept_id"></many-to-one> //department为Employee实体中的关系属性。







HSSASJ 2009-04-27
  • 打赏
  • 举报
回复
改一 改:
2)独立外键的关联方式:
1)主表映射文件的写法:
<class name="Person" table="t_person">
<id name="id" column="p_id">
<generator class="increment"> </generator>
</id>
<property name="name" column="p_name" type="string"> </property>
<property name="birthday" column="p_birthday" type="date"> </property>
<property name="email" column="email" type="string"> </property>
<property name="phone" column="phone" type="string"> </property>
<one-to-one name="passport" property-ref="person" cascade="all"> </one-to-one> //person为
实体类Passwort中的关系属性。
</class>

2)辅表映射文件的写法:
<class name="Passport" table="t_passport">
<id name="id" column="p_id">
<generator class="increment">
</generator>
</id>
<property name="serial" column="p_serial" type="string"> </property>
<property name="expiry" column="p_expiry" type="integer"> </property>
<property name="date" column="p_date" type="date"> </property>
<many-to-one unique="true" name="person" column="pss_id">//pss_id为外键列
</one-to-one>
</class>
HSSASJ 2009-04-25
  • 打赏
  • 举报
回复
如樓上所說有兩種形式:一是共享主键的形式进行关联,二就是独立外键的形式进行关联:
例如:人(Person)和护照(Passwort)的关系是一对一的的关系:
1)共享主键的形式:
1)主表映射文件的写法:
<class name="Person" table="t_person">
<id name="id" column="p_id">
<generator class="increment"></generator>
</id>
<property name="name" column="p_name" type="string"></property>
<property name="birthday" column="p_birthday" type="date"></property>
<property name="email" column="email" type="string"></property>
<property name="phone" column="phone" type="string"></property>
<one-to-one name="passport" cascade="all"></one-to-one>
</class>

2)辅表映射文件的写法:
<class name="Passport" table="t_passport">
<id name="id" column="p_id">
<generator class="foreign">
<param name="property">person</param> //person为Passport中的关系属性
</generator>
</id>
<property name="serial" column="p_serial" type="string"></property>
<property name="expiry" column="p_expiry" type="integer"></property>
<property name="date" column="p_date" type="date"></property>
<one-to-one name="person" constrained="true" cascade="all">
</one-to-one>
</class>


2)独立外键的关联方式:
1)主表映射文件的写法:
<class name="Person" table="t_person">
<id name="id" column="p_id">
<generator class="increment"></generator>
</id>
<property name="name" column="p_name" type="string"></property>
<property name="birthday" column="p_birthday" type="date"></property>
<property name="email" column="email" type="string"></property>
<property name="phone" column="phone" type="string"></property>
<one-to-one name="passport" property-ref="person" cascade="all"></one-to-one> //person为
实体类Passwort中的关系属性。
</class>

2)辅表映射文件的写法:
<class name="Passport" table="t_passport">
<id name="id" column="p_id">
<generator class="increment">
</generator>
</id>
<property name="serial" column="p_serial" type="string"></property>
<property name="expiry" column="p_expiry" type="integer"></property>
<property name="date" column="p_date" type="date"></property>
<one-to-one name="person" column="pss_id" cascade="all">//pss_id为外键列
</one-to-one>
</class>

如有错请指正!谢谢!!!





wuqianyu1 2009-04-25
  • 打赏
  • 举报
回复
one to one 的有两种形式的,一种是共享主键,一种是独立外键.
比如User和Account是一对一的关系,若将外键加到User表,Account表为主表,User表为辅表
1).共享主键方法名方式:主外键是一样的,在主表方写<one-to-one name="关联属性"/>
辅表方写:<one-to-one name="关联属性",constrained="false">,还要注意辅表的主健生成方式必需该为foreign
即: <id name="oid" column="OID" >
<generator class="foreign">
<param name="property">addr</param>
</generator>
</id>
2).独立外键:主外键不一样,
在主表方写
<one-to-one name="owner"
property-ref="acct" />
在辅表方写 <many-to-one name="关联属性" column="字段名" unique="true"/>
eastcfd 2009-04-25
  • 打赏
  • 举报
回复
我改了配置文件还是不知道怎么把myeclipse中的一对多改成单对单的,有没视频给个能教我怎么建单对单的,请大家帮忙
eastcfd 2009-04-25
  • 打赏
  • 举报
回复
非常感谢两位的解答!
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使关联工作 1.3.4. 值类型的集合 1.3.5. 双向关联 1.3.6. 使双向连起来 1.4. 第三部分 - EventManager web应用程序 1.4.1. 编写基本的servlet 1.4.2. 处理与渲染 1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory 3.3. JDBC连接 3.4. 可选的配置属性 3.4.1. SQL方言 3.4.2. 外连接抓取(Outer Join Fetching) 3.4.3. 二进制流 (Binary Streams) 3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. JNDI绑定的SessionFactory 3.8.3. 在JTA环境下使用Current Session context (当前session上下文)管理 3.8.4. JMX部署 4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 (可选) 4.1.4. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators)(可选) 4.2. 实现继承(Inheritance) 4.3. 实现equals()和hashCode() 4.4. 动态模型(Dynamic models) 4.5. 元组片断映射(Tuplizers) 5. 对象/关系数据库映射基础(Basic O/R Mapping) 5.1. 映射定义(Mapping declaration) 5.1.1. Doctype 5.1.2. hibernate-mapping 5.1.3. class 5.1.4. id 5.1.5. composite-id 5.1.6. 鉴别器(discriminator) 5.1.7. 版本(version)(可选) 5.1.8. timestamp (可选) 5.1.9. property 5.1.10. 多对一(many-to-one) 5.1.11. 一对一 5.1.12. 自然ID(natural-id) 5.1.13. 组件(component), 动态组件(dynamic-component) 5.1.14. properties 5.1.15. 子类(subclass) 5.1.16. 连接的子类(joined-subclass) 5.1.17. 联合子类(union-subclass) 5.1.18. 连接(join) 5.1.19. 键(key) 5.1.20. 字段和规则元素(column and formula elements) 5.1.21. 引用(import) 5.1.22. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧