gpt4 book ai didi

java - Hibernate 和 JAXB 注释发生冲突

转载 作者:行者123 更新时间:2023-12-01 12:46:00 25 4
gpt4 key购买 nike

我对 hibernate 或 JAXB 不是特别熟悉,所以如果我没有很好地解释我的问题,请原谅我。

我正在使用的程序已经设置了一类 hibernate 实体。我的工作是添加 JAXB 注释以将变量编码到 XML 文件。

@OneToMany(fetch = FetchType.LAZY, mappedBy = "Blah")
@XmlElementWrapper(name = "ListOfThings")
@XmlElement(name = "Thing")
private Set<Stuff> stuff = new HashSet<Stuff>(0);

当我尝试运行该程序时,出现此错误:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: package.class, no session or session was closed

我有 3 个变量使用 @XmlElement 注释,其中两个变量也有 @OneToMany 注释。两个 @OneToMany 变量都会给我同样的错误,但是当我将它们设置为 transient 时,程序可以使用非 @OneToMany 注释的变量完美地编译。

知道我的问题是什么吗?

最佳答案

当 JAXB 写入 XML 时,它会遍历整个数据结构,包括所有关系。 Hibernate 使用延迟加载。当您让 JAXB 创建 XML 时,您需要确保您的实体已附加到 Activity 的 hibernate session 。这允许 hibernate 执行所需的查询,以按照 JAXB 的要求填充数据结构的延迟加载部分。

关于java - Hibernate 和 JAXB 注释发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700559/

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