Hibernate - 映射中两个相同类型的子类

时间:2016-01-07 21:05:43

标签: java json hibernate rest jersey

我正在使用json(来自Google的Gson)处理RESTful应用程序(Jersey)来获取和发送数据。对于持久性,我正在使用Hibernate。在下一行中,我将以一些代码为例(它不是真正的数据!)。

我有两个类之间的关系,如下所示:

public class A {
    private Long id;
    private B fieldB1;
    private B fieldB2;
}

(假设该类有getter和setter。)

映射文件如下:

<hibernate-mapping>
    <class name="com.app.A" table="A">
        <id name="id" type="java.lang.Long">
            <column name="ID" unique="true"/>
            <generator class="identity" />
        </id>
        <many-to-one name="fieldB1" class="com.app.B" fetch="join">
            <column name="FIELDB1" />
        </many-to-one>
        <many-to-one name="fieldB2" class="com.app.B" fetch="join">
            <column name="FIELDB2" />
        </many-to-one>
    </class>
</hibernate-mapping> 

当我尝试向服务器中的REST服务发送请求时(现在我正在使用Google的Postman),以便通过id获取 A 对象,转换为JSON ,出现以下4种情况:

  
      
  1. 如果fieldB1和fieldB2为null,则我收到的json对象在正文中没有fieldB1和fieldB2。
  2.   
  3. 如果只有fieldB2为null,我收到的json对象有fieldB1但在正文中没有fieldB2。
  4.   
  5. 如果fieldB1和fieldB2有数据(也就是两者都不为null),我会得到以下异常: java.lang.UnsupportedOperationException:   尝试序列化java.lang.Class:   org.hibernate.proxy.HibernateProxy。忘了注册一个类型   适配器吗
  6.   
  7. 如果fieldB1为null但fieldB2不为null,则发生项目n°3。
  8.   

如我所见,问题出现在映射中的第二个类 B 。所以?

0 个答案:

没有答案