如何使用非主键作为引用进行一对一的hibernate映射

时间:2012-01-03 14:36:09

标签: hibernate nhibernate-mapping

我试图为表的一对一关系做一个XML Hibernate映射

用户(UserId,Name,StatusId) 状态(StatusId,StatusName)

我试过这个,我在论坛上找到了

在User.hbm.xml

  <many-to-one class="Status" name="statusid" property-ref="statusid">
    <column name="statusname" />
  </many-to-one>

和becoz这个我得到了这个错误

SEVERE:初始SessionFactory创建失败.java.lang.NullPointerException 警告:StandardWrapperValve [默认值]:PWC1406:servlet的Servlet.service()默认引发异常 java.lang.ExceptionInInitializerError

当我使用PK作为参考时,我没有收到此错误..

任何人都可以解释该属性的含义以及为什么会出现此错误? PS:我正处于学习阶段,请提供帮助&gt;。&lt;

2 个答案:

答案 0 :(得分:1)

如果您没有特别的东西,以下映射应该有效。然而,它总是有助于完整的堆栈跟踪

  <many-to-one class="Status" name="statusid" column="StatusId" />

答案 1 :(得分:1)

哦,你真的想加入User.statusid = Status.statusname吗?这意味着statusname是状态的备用键。

在property-ref中,您需要设置您引用的Status对象的属性。 见Associations on Alternate Keys

<many-to-one class="Status" name="statusid" property-ref="statusname"/>