日期:2014-05-17  浏览次数:20765 次

Hibernate 基于主键的单向1-1
一直不理解这个...试了试一个例子...
比如一个User有一个Name,User可以getName().Name不能得到user。
User中除了Name属性外还有一个id(int)属性做为表示。Name中只有一个name属性(String)。

User.hbm.xml设置主键的时候:
<id name="id">
<generator class="foreign">
<param name="property">name</param>
</generator>
</id>

然后运行的时候会报
 IllegalArgumentException

是不是因为User的主键id是int类型,Name的主键是string类型,把string赋值给int所以出错?!
如果是这样的话那基于主键的单向1-1,两个关联的类的主键不仅要是同一类型而且值也要一样?
大家平时是怎么处理这种关联的呢?<many-to-one>再加上unique吗?
------解决方案--------------------
一对一  两种方法

1.共享主键  必须一致
2.唯一外键  外键和主表的主键一致