我正在使用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种情况:
- 如果fieldB1和fieldB2为null,则我收到的json对象在正文中没有fieldB1和fieldB2。
- 如果只有fieldB2为null,我收到的json对象有fieldB1但在正文中没有fieldB2。
- 如果fieldB1和fieldB2有数据(也就是两者都不为null),我会得到以下异常: java.lang.UnsupportedOperationException: 尝试序列化java.lang.Class: org.hibernate.proxy.HibernateProxy。忘了注册一个类型 适配器吗
- 如果fieldB1为null但fieldB2不为null,则发生项目n°3。
醇>
如我所见,问题出现在映射中的第二个类 B 。所以?