论坛首页 Java企业应用论坛

关于Hibernate一对一的关联问题

浏览 4892 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-09  
hibernate的一对一关联,要实现的需求是有两张表.User和Employee,其中他们是一一对应的关系,其中User表的结构为
ID           主键,业务无关
USERID       用户编号
USERNAME     用户类型
EMPLOYEEID   关联Employee表中的员工编号EMPID

Employee的结构是
ID           主键,业务无关
EMPID        员工编号
EMPNAME      员工姓名

我的做法是
配置文件:
user.hbm.xml
<many-to-one name="employee" class="Employee" cascade="none"
outer-join="auto" column="EMPLOYEEID" property-ref="empid" unique="true"/>

employee.hbm.xml
<one-to-one name="user" class="User" cascade="all" property-ref="employee"/>

这样关联,根据employee.getUser()取不到值,在保存的时候,根据user.setEmployee()保存成功的,但现在就是取不到值,会是甚么原因呢?
   发表时间:2007-05-09  

真是自找麻烦,我看你重新设计表吧:

要么合成两张表为一张,要么请通过主键-外键关联,不要使用属性关联-外键关联

使用property-ref有什么好?那是针对遗留系统的。
0 请登录后投票
   发表时间:2007-05-09  
表不是我设计的,上面设计的。改不了~
至于那两张表是我虚构的,真实的属性很多,但他们的关系就是所表达的那两张表的关系
属性关联,不是主键-外键关联。
全部表的主键都是与业务无关的,不过多对多,一对多等都没问题,就是一对一出现能存不能读的问题。
如果实在没办法,干脆用一对多来处理算了~~呵呵
0 请登录后投票
   发表时间:2007-05-09  
你试一下这个配置,看如何

user.hbm.xml
<one-to-one name="employee" class="Employee" column="EMPLOYEEID" property-ref="empid" />


employee.hbm.xml
<many-to-one name="user" class="User" unique="true" cascade="all" property-ref="employee" />


---
以上配置错误,别试了
0 请登录后投票
   发表时间:2007-05-09  
<one-to-one>是没有column的吧?记得没有的
0 请登录后投票
   发表时间:2007-05-09  
Qieqie 写道
你试一下这个配置,看如何

user.hbm.xml
<one-to-one name="employee" class="Employee" column="EMPLOYEEID" property-ref="empid" />


employee.hbm.xml
<many-to-one name="user" class="User" unique="true" cascade="all" property-ref="employee" />



试过了,没有column属性
0 请登录后投票
   发表时间:2007-05-09  
user.hbm.xml,试试去掉两个属性
<many-to-one name="employee" class="Employee" cascade="none"
outer-join="auto" column="EMPLOYEEID"/>
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics