gpt4 book ai didi

java - 将 Resteasy 与 javassist 一起使用?

转载 作者:行者123 更新时间:2023-11-30 12:00:35 24 4
gpt4 key购买 nike

我正在尝试使用 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 返回一些东西,我会得到一个错误:

Could not find MessageBodyWriter for response object of type: com.company.domain.Episode_$$_javassist_27 of media type: application/xml

我想这是 javassist 的一些神奇之处,但我认为它不是预期的类,这让 JAX-B 感到困惑。我可以告诉 JAX-B 在哪里寻找注释,或者我可以从此对象获取 POJO 吗?

从未直接使用过 javassist,所以不确定它是如何工作的。

最佳答案

您必须取消对对象的代理..找到一个有效的实用方法..

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;

关于java - 将 Resteasy 与 javassist 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com