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

如何使用非主键作为引用进行一对一hibernate映射,hibernate,nhibernate-mapping,Hibernate,Nhibernate Mapping,我正在尝试为表的一对一关系进行XML Hibernate映射 用户(用户ID、名称、状态ID) 状态(StatusId、StatusName) 我在论坛上找到了这个 在User.hbm.xml下 <many-to-one class="Status" name="statusid" property-ref="statusid"> <column name="statusname" /> </many-to-one> 因为这个,我犯了这个

我正在尝试为表的一对一关系进行XML Hibernate映射

用户(用户ID、名称、状态ID) 状态(StatusId、StatusName)

我在论坛上找到了这个

在User.hbm.xml下

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

因为这个,我犯了这个错误

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

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

谁能解释一下这个属性是什么意思,为什么我会出现这个错误?
PS:我正处于学习阶段,请帮助>如果你没有什么特别的东西,下面的映射应该可以工作。然而,拥有完整的堆栈跟踪总是有帮助的

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

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

在property ref中,需要设置所引用的Status对象的属性。 见:



您可以发布错误的完整堆栈跟踪吗?标题中写着“一对一”。我猜你是说多对一?除非您希望每个用户具有不同的状态?
<many-to-one class="Status" name="statusid" property-ref="statusname"/>