Hibernate单向一对一注释映射

时间:2017-02-15 16:30:28

标签: hibernate hibernate-mapping hibernate-annotations

如果地址表中存在studentId,如何使用一对一映射来延迟加载地址。

  • 学生是父表
  • 解决子表格
  • 并非所有学生都有地址。如果他们这样做,那么基于来自地址表的studentId做懒惰加载。

enter image description here

我尝试过映射,但是当我尝试只为了学生时,我最终得到了以下异常

org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.abcCompany.AddressVO. Expected: class java.lang.Integer, got class java.lang.String
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:134)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1070)
    at org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:989)
    at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:716)
    at org.hibernate.type.EntityType.resolve(EntityType.java:502)
...

根据我可以说的例外,它试图用addressId而不是studentId映射地址。所以我在Student Entity bean中尝试了这个

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "student_id", referencedColumnName = "student_Id")
private AddressVO address;

PS:这是否也可以使用bidrectional mapping来从地址表的StudentId获取学生地址。

0 个答案:

没有答案