java– 杰克逊循环依赖

java– 杰克逊循环依赖,第1张

概述我有一个循环依赖,我现在正在努力解决拿这两个类 - 去掉锅炉板代码用于演示目的1级@Entity @Table(name = 'T_CREDENTIAL') @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @JsonIdentityInfo(generator=ObjectIdGenerators.In

我有一个循环依赖,我现在正在努力解决
拿这两个类 – 去掉锅炉板代码用于演示目的

1级

@Entity@table(name = "T_CREDENTIAL")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)@JsonIDentityInfo(generator=ObjectIDGenerators.IntSequenceGenerator.class,property="@ID")public class Credential implements Serializable {    @ID    @GeneratedValue(strategy = GenerationType.auto)    private Long ID;    //Removed @JsonIgnore as want to disable certain fIElds if no credentials are available        //Also fetch this in an eager fashion instead of lazily loading it    @OnetoMany(mappedBy = "credential",fetch=FetchType.EAGER)    private Set

2级

@Entity@table(name = "T_USERTASK")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)@JsonIDentityInfo(generator=ObjectIDGenerators.IntSequenceGenerator.class,property="@ID")public class UserTask implements Serializable {    /**     *      */    private static final long serialVersionUID = -8179545669754377924L;    @ID    @GeneratedValue(strategy = GenerationType.auto)    @Column(name = "ID")    private Long ID;    @ManyToOne(fetch=FetchType.EAGER)    @NotNull(message = "Credential must not be null")    private Credential credential;

不幸的是,我有一些用例,其中UserTask需要加载凭据和Credential需要加载Usertasks的情况

@JsonIDentityInfo注释似乎正在完成它的工作
如果我加载所有UserTasks,它会加载第一个userTask及其凭据,但随后该凭据对象还将加载分配给该凭证的任何UserTasks.然后会遇到新的@ID或userTask,现在用凭证加载它而不是2个用户任务

有什么想法我可以做些什么来规避这个问题?

干杯
达米安

– 问题更新
我现在更新了我的代码以使用其他用户提到的新注释

1级

    @Entity@table(name = "T_CREDENTIAL")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class Credential implements Serializable {    /**     *      */    private static final long serialVersionUID = -8696943454186195541L;    //Removed @JsonIgnore as want to disable certain fIElds if no credentials are available        //Also fetch this in an eager fashion instead of lazily loading it    @OnetoMany(mappedBy = "credential",fetch=FetchType.EAGER)    @JsonManagedReference("credential")    private Set

2级

@Entity@table(name = "T_USERTASK")@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)public class UserTask implements Serializable {    @ID    @GeneratedValue(strategy = GenerationType.auto)    @Column(name = "ID")    private Long ID;    @ManyToOne(fetch=FetchType.EAGER)    @NotNull(message = "Credential must not be null")    @JsonBackReference("credential")    private Credential credential;........

现在这些类现在可以工作,并且没有循环依赖
但是,当我现在进行查询以获取我的usertasks或单个任务时,即使我没有指定@JsonIgnore注释,也不会返回凭证对象.是什么原因引起了这个?最佳答案如果你使用Jackson httpMessageConverter,你应该查看他们的文档 – http://wiki.fasterxml.com/JacksonFeatureBiDirReferences

您应该添加此处显示的注释:

public class NodeList{    @JsonManagedReference    public List
总结

以上是内存溢出为你收集整理的java – 杰克逊循环依赖全部内容,希望文章能够帮你解决java – 杰克逊循环依赖所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1266595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)