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

时间:2016-07-05 10:24:39

标签: java json playframework jackson ebean

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

我的问题是在这一行:

result.set("data", Json.toJson(historyList));

我收到此错误:

  

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

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

@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;
    ...
}

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
@EntityConcurrencyMode(ConcurrencyMode.NONE)
public class UserAccount{
    @Transient
    @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id", scope = History.class)
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @JsonBackReference
    private History history;
    ...
}

正如你所看到的,我尝试了很多不同的注释,并不是真的知道我在做什么,但我一直都会遇到同样的错误。

有没有人知道还有什么要做或尝试?

编辑:

以下是UserAccount类的其他一些属性:

@Id
@Required
protected Integer id;

@JsonIgnore
protected UUID uniqueId;

@Required
protected Integer mandantId;

@Required
protected Date createdOn;

有趣的事情:如果我将@JsonIgnore添加到mandantID属性,则错误消息将更改为:

  

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

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

0 个答案:

没有答案