gpt4 book ai didi

java - Hibernate 和 Jackson 惰性序列化

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:10 26 4
gpt4 key购买 nike

我正在开发一个使用 Hibernate 和 Jackson 序列化我的对象的项目。我想我明白它应该如何工作,但我无法让它工作。

如果我理解得很好,一旦关系获取模式设置为 LAZY,如果你想要这个关系,你必须初始化它。

这是我的类(class):

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
@Table(schema="MDDI_ADMIN", name = "MINIUSINE")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class MiniUsine {

@Id
@Column(name="MINIUSINEID", nullable = false)
private int miniUsineID;

@Column(name = "NAME", length = 40, nullable = false)
private String name;

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="FluxID")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Set<Flux> fluxs = new HashSet<Flux>();

以及所有的 getter 和 setter。

我还尝试将此 JsonInclude.Include.NON_EMPTY 作为类注释。也试过NON_NULL。然而,jackson 一直给我发

com.fasterxml.jackson.databind.JsonMappingException:未能延迟初始化角色集合:MiniUsine.fluxs,没有 session 或 session 已关闭(通过引用链:java.util.ArrayList[0]-> MiniUsine["fluxs"])

我正在将其序列化为:mapper.writeValueAsString(optMU);

使用 jackson 2.3.2

感谢帮助

最佳答案

我知道这是一个老问题,但我遇到了同样的问题。

您必须添加一个新的maven 依赖项以支持Hibernate 的JSON 序列化和反序列化。我用的是 Hibernate5 所以我加了

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<version>2.9.2</version>
</dependency>

现在注册新模块。

@Provider
public class JacksonHibernateProvider implements ContextResolver<ObjectMapper> {

@Override
public ObjectMapper getContext(final Class<?> type) {
final ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Hibernate5Module());
return mapper;
}
}

关于java - Hibernate 和 Jackson 惰性序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37678919/

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