`
stonecai
  • 浏览: 27849 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于Hibernate一对一的关联问题

阅读更多
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()保存成功的,但现在就是取不到值,会是甚么原因呢?
分享到:
评论
6 楼 onemoretry 2007-05-09  
user.hbm.xml,试试去掉两个属性
<many-to-one name="employee" class="Employee" cascade="none"
outer-join="auto" column="EMPLOYEEID"/>
5 楼 stonecai 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属性
4 楼 stonecai 2007-05-09  
<one-to-one>是没有column的吧?记得没有的
3 楼 Qieqie 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" />


---
以上配置错误,别试了
2 楼 stonecai 2007-05-09  
表不是我设计的,上面设计的。改不了~
至于那两张表是我虚构的,真实的属性很多,但他们的关系就是所表达的那两张表的关系
属性关联,不是主键-外键关联。
全部表的主键都是与业务无关的,不过多对多,一对多等都没问题,就是一对一出现能存不能读的问题。
如果实在没办法,干脆用一对多来处理算了~~呵呵
1 楼 Qieqie 2007-05-09  

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

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

使用property-ref有什么好?那是针对遗留系统的。

相关推荐

Global site tag (gtag.js) - Google Analytics