我正在尝试使用resteasy来提供spring-hibernate提取的一些实体。
我已经配置了一个返回POJO并按预期工作的方法:
@GET
@Path("/test")
@Produces(MediaType.APPLICATION_XML)
public Episode getTestEpisode() {
Episode e = new Episode();
e.setEpisodename("test");
return e;
}
产地:
<episode episodeId="0">
<combinedEpisodenumber>0.0</combinedEpisodenumber>
<combinedSeason>0</combinedSeason>
<episodename>test</episodename>
<episodenumber>0</episodenumber>
<seasonId>0</seasonId>
<seasonnumber>0</seasonnumber>
</episode>
但是,如果我尝试从spring / hibernate返回一些东西,我会收到错误:
找不到类型的响应对象的MessageBodyWriter:媒体类型的com.company.domain.Episode _ $$ _ javassist_27:application / xml
我认为这对javassist来说是一些神奇的东西,但是我认为这不是JAX-B的混乱而不是预期的类。我可以告诉JAX-B在哪里查找注释,还是可以从这个对象中获取POJO?
从未直接使用过javassist,因此不确定它是如何工作的。
答案 0 :(得分:1)
你必须解除对象的代理..找到一个有效的实用工具方法..
Converting Hibernate proxy to real object
public static <T> T initializeAndUnproxy(T entity) {
if (entity == null) {
throw new
NullPointerException("Entity passed for initialization is null");
}
Hibernate.initialize(entity);
if (entity instanceof HibernateProxy) {
entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()
.getImplementation();
}
return entity;
}