简化说明
假设我有2个这样的表:
TableName 建筑物
(2)柱:
* buildPrimaryKey,
* addrForeignKey
TableName 地址
(1)柱:
* addrPrimaryKey
我想要休眠地图
建立。 addrForeignKey 到Address.addrPrimaryKey
相反,hibernate正在映射
建立。 buildPrimaryKey 到Address.addrPrimaryKey
下面的当前地图文件
Building.hbm.xml
......
<one-to-one name="addrForeignKey" fetch="select" class="com.Address"/>
......
Address.hbm.xml
......
<id name="addrPrimaryKey" type="java.lang.Long" column="addrPrimaryKey">
<generator class="increment"/>
</id>
......
我缺少什么或定义错误?
**看看类似的堆栈溢出问题我试过反转一对一元素,但是这样做时会得到无法解析的映射错误。
答案 0 :(得分:0)
最终通过使用多对一映射解决了这个问题(尽管不是实际关系)
在Building.hbm.xml中
&lt; many-to-one name =“var_addr” - 包含类的变量名
class =“com.Address” - 上面建筑物中的对象类
column =“addrForeignKey” - 相关的外键
cascade =“save-update” - 不确定这是真的这样做
独特= “真”/&GT; - 强制执行一对一映射的hackish方式
Address.hbm.xml - 不需要与此映射相关的信息
总而言之,我发现对象映射的对象与hibernate非常不直观(在这种情况下是实际的多对一或多对多映射),以及我可用的书籍,比如建议这样做的多对象一种映射作为一种解决方案,似乎同意。我可能会在将来尝试注释,希望它们更清晰。