私のbeanをGson経由でjsonに変換しようとしています。私のBean(Logs)には別のBean(Log)と、最初のBeanへの2番目のBean参照が含まれています。JavaでリファレンスBeanとBeanをjsonに変換するには?
@Entity
@Table(name = "t_logs")
public class Logs {
@Id
@Column(name = "executionid")
private String executionId;
@Column(name = "sentdate")
@Temporal(TemporalType.TIMESTAMP)
private Date sentDate;
@Column(name = "sent")
private boolean sent;
@OneToMany(mappedBy = "logs", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Log> logList;}
@Entity
@Table(name = "t_log")
public class Log {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@ManyToOne
@JoinColumn(name = "executionid")
private Logs logs;
@Column(name = "startdate")
@Temporal(TemporalType.TIMESTAMP)
private Date startDate;
@Column(name = "enddate")
@Temporal(TemporalType.TIMESTAMP)
private Date endDate;
}
私がJson形式を変換しようとすると、上記のようなエラーが発生します。私はこれがサイクルだと思いますが、どのように私はそれを解決することができます java.lang.StackOverflowErrorを
、私はあなたがログとログの間で循環参照を持っている
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();
return gson.toJson(logs, Logs.class);
あなたはそれを無視するためのアノテーションを提案できますか? –
Gsonのフィールドを除外するには、ここをクリックしてくださいhttp://howtoprogram.xyz/2016/10/16/ignore-or-exclude-field-in-gson/ –
@Selvakumarありがとうございますが、私は提出が必要です私があなたの提案したlog.executionid setted nullを試したときに、実行beanのbean(executeIdのため)に –