Java 尝试序列化为JSON-Ebean时出错:延迟加载失败

Java 尝试序列化为JSON-Ebean时出错:延迟加载失败,java,json,playframework,jackson,ebean,Java,Json,Playframework,Jackson,Ebean,我正在制作一个页面,显示应用程序的历史(=>谁在什么时候做了什么)。因此,我们的想法是获取一个要显示的历史元素列表,将其放入一个JSON对象并发送它 我的问题是,在这一行: result.set("data", Json.toJson(historyList)); 我得到这个错误: java.lang.IllegalArgumentException:Bean已被删除-延迟加载失败(通过引用链:components.Page[“list”]->com.avaje.ebean.common.Be

我正在制作一个页面,显示应用程序的历史(=>谁在什么时候做了什么)。因此,我们的想法是获取一个要显示的历史元素列表,将其放入一个JSON对象并发送它

我的问题是,在这一行:

result.set("data", Json.toJson(historyList));
我得到这个错误:

java.lang.IllegalArgumentException:Bean已被删除-延迟加载失败(通过引用链:components.Page[“list”]->com.avaje.ebean.common.BeanList[0]->models.history.history[“user”]->models.person.UserAccount[“mandanti”)

以下是我的模型的一些摘录:

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = History.class)
@EntityConcurrencyMode(ConcurrencyMode.NONE)
public class History{
    @ManyToOne
    @JsonManagedReference
    private UserAccount user;
    ...
}
以及:

正如你所看到的,我尝试了很多不同的注释,并不知道我在做什么,但我一直得到相同的错误

有人知道还有什么可以做或尝试吗

编辑: 下面还有来自
UserAccount
类的一些其他属性:

@Id
@Required
protected Integer id;

@JsonIgnore
protected UUID uniqueId;

@Required
protected Integer mandantId;

@Required
protected Date createdOn;
有趣的事情:如果我将
@JsonIgnore
添加到
mandandi
属性中,错误消息将更改为:

java.lang.IllegalArgumentException:Bean已被删除-延迟加载失败(通过引用链:components.Page[“list”]->com.avaje.ebean.common.BeanList[0]->models.history.history[“user”]->models.person.UserAccount[“createdOn”)


然后,如果我将
@JsonIgnore
添加到
createdOn
属性中,我会得到相同的错误,但会使用下一个属性的名称。

Hum,您确定数据在数据库级别是一致的吗?看起来Eben试图加载相关的
UserAccount
,但它不在数据库中,因此可能您的数据“已损坏”。此外,您使用的是哪个版本的Play和Ebian?我使用的是Play 2.4.2和Ebian 2.0.0,在PostgreSQL 9.5中,损坏数据的想法可能是一个很好的线索,因为我在翻转基础并放置新数据后没有出现此错误,但我在重新启动activator后得到它。但是,如果我使用pgAdmin查看这些表,它不会告诉我它们需要真空(如果数据损坏,就会出现真空)您确定您使用的是Ebean 2.0.0吗?我甚至找不到这个版本了,因为它已经很旧了(可能是2010年)。恐怕是这样。这是plugins.sbt文件中的一行:>addSbtPlugin(“com.typesafe.sbt“%”sbt play ebean“%”2.0.0”),实际上您正在使用play ebean 2.0.0,它添加了。关于数据损坏,我的意思是,可能您的数据库中有不一致的数据。尝试查看每个
历史记录
是否有对应的
用户帐户
行。嗯,您确定数据在数据库级别是一致的吗?看起来Eben试图加载相关的
UserAccount
,但它不在数据库中,因此可能您的数据“已损坏”。此外,您使用的是哪个版本的Play和Ebian?我使用的是Play 2.4.2和Ebian 2.0.0,在PostgreSQL 9.5中,损坏数据的想法可能是一个很好的线索,因为我在翻转基础并放置新数据后没有出现此错误,但我在重新启动activator后得到它。但是,如果我使用pgAdmin查看这些表,它不会告诉我它们需要真空(如果数据损坏,就会出现真空)您确定您使用的是Ebean 2.0.0吗?我甚至找不到这个版本了,因为它已经很旧了(可能是2010年)。恐怕是这样。这是plugins.sbt文件中的一行:>addSbtPlugin(“com.typesafe.sbt“%”sbt play ebean“%”2.0.0”),实际上您正在使用play ebean 2.0.0,它添加了。关于数据损坏,我的意思是,可能您的数据库中有不一致的数据。尝试查看每个
历史记录
是否有对应的
用户帐户
行。
@Id
@Required
protected Integer id;

@JsonIgnore
protected UUID uniqueId;

@Required
protected Integer mandantId;

@Required
protected Date createdOn;