当我使用 Jackson ObjectMapper() class 的 writeValueAsString() 方法时如何解决这个无限递归(StackoverflowError)?
How to solve this infinite recursion (StackoverflowError) when I use writeValueAsString() method of Jackson ObjectMapper() class?
我对 JSON 完全陌生,Java 如何处理转换成这种格式。
所以我在 Spring MVC 应用程序中遇到了以下问题 我有这个控制器方法可以正确处理 AJAX 对 /provinceDiUnaRegione.json[=48 的请求=]资源:
@RequestMapping(value = "/provinceDiUnaRegione.json")
@ResponseBody
public String getProvince(String codiceRegione) {
System.out.println("INTO getProvince()");
List<Twb1013Provincia> provinceDiUnaRegioneList = geograficaService.getListaProvinceDiUnaRegione(codiceRegione);
try {
String listaProvince = new ObjectMapper().writeValueAsString(provinceDiUnaRegioneList);
return listaProvince;
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
如您所见,此方法检索 Twb1013Provincia 对象的列表,然后使用此行将检索到的列表转换为 JSON 字符串(如果正确请纠正我错了)
String listaProvince = new ObjectMapper().writeValueAsString(provinceDiUnaRegioneList);
问题是当执行这一行时我得到这个异常:
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (WhosebugError) (through reference chain: it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafic...
所以做了一些分析,在我看来问题是我正在尝试转换 Twb1013Provincia 对象的列表,这些对象是这样的:
@Entity
@Table(name="anagrafiche.TWB1013_PROVINCIA")
@NamedQuery(name="Twb1013Provincia.findAll", query="SELECT t FROM Twb1013Provincia t")
public class Twb1013Provincia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="COD_PRV")
private String codPrv;
//bi-directional many-to-one association to Twb1012Regione
@ManyToOne
@JoinColumn(name="COD_REG")
private Twb1012Regione twb1012Regione;
.................................................
.................................................
OTHER FIELDS
.................................................
.................................................
}
问题似乎是,如您所见,这个 class 包含一个 Twb1012Regione twb1012Regione; 字段并且这个 Twb1012Regione class 依次包含对原始 Twb1013Provincia(要转换的对象)的引用,如下所示:
@Entity
@Table(name="anagrafiche.TWB1012_REGIONE")
@NamedQuery(name="Twb1012Regione.findAll", query="SELECT t FROM Twb1012Regione t")
public class Twb1012Regione implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="COD_REG")
private String codReg;
//bi-directional many-to-one association to Twb1013Provincia
@OneToMany(mappedBy="twb1012Regione")
private List<Twb1013Provincia> twb1013Provincias;
.................................................
.................................................
OTHER FIELDS
.................................................
.................................................
}
所以问题似乎是,当我尝试转换一个 Twb1013Provincia 对象时,它在其中找到一个本身包含的 Twb1012Regione 字段Twb1013Provincia...所以进入无限循环,无法转换。
那么我该如何解决这个问题呢?是否存在从 Twb1013Provincia 对象转换中排除 Twb1012Regione 字段的方法?
或者我可以更好地指定必须以 JSON 格式转换的 Twb1013Provincia class 字段的列表吗? (我只需要转换这个 class 的 2 个字段)
Tnx
您可以使用 @JsonIgnore 注释从序列化中排除一个字段。
尝试:
@JsonIgnore
private Twb1012Regione twb1012Regione;
我对 JSON 完全陌生,Java 如何处理转换成这种格式。
所以我在 Spring MVC 应用程序中遇到了以下问题 我有这个控制器方法可以正确处理 AJAX 对 /provinceDiUnaRegione.json[=48 的请求=]资源:
@RequestMapping(value = "/provinceDiUnaRegione.json")
@ResponseBody
public String getProvince(String codiceRegione) {
System.out.println("INTO getProvince()");
List<Twb1013Provincia> provinceDiUnaRegioneList = geograficaService.getListaProvinceDiUnaRegione(codiceRegione);
try {
String listaProvince = new ObjectMapper().writeValueAsString(provinceDiUnaRegioneList);
return listaProvince;
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
如您所见,此方法检索 Twb1013Provincia 对象的列表,然后使用此行将检索到的列表转换为 JSON 字符串(如果正确请纠正我错了)
String listaProvince = new ObjectMapper().writeValueAsString(provinceDiUnaRegioneList);
问题是当执行这一行时我得到这个异常:
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (WhosebugError) (through reference chain: it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafiche.Twb1012Regione["tpg1029Provnuoists"]->org.hibernate.collection.internal.PersistentBag[0]->it.myCompany.myProject.anagrafiche.Tpg1029Provnuoist["twb1012Regione"]->it.myCompany.myProject.anagrafic...
所以做了一些分析,在我看来问题是我正在尝试转换 Twb1013Provincia 对象的列表,这些对象是这样的:
@Entity
@Table(name="anagrafiche.TWB1013_PROVINCIA")
@NamedQuery(name="Twb1013Provincia.findAll", query="SELECT t FROM Twb1013Provincia t")
public class Twb1013Provincia implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="COD_PRV")
private String codPrv;
//bi-directional many-to-one association to Twb1012Regione
@ManyToOne
@JoinColumn(name="COD_REG")
private Twb1012Regione twb1012Regione;
.................................................
.................................................
OTHER FIELDS
.................................................
.................................................
}
问题似乎是,如您所见,这个 class 包含一个 Twb1012Regione twb1012Regione; 字段并且这个 Twb1012Regione class 依次包含对原始 Twb1013Provincia(要转换的对象)的引用,如下所示:
@Entity
@Table(name="anagrafiche.TWB1012_REGIONE")
@NamedQuery(name="Twb1012Regione.findAll", query="SELECT t FROM Twb1012Regione t")
public class Twb1012Regione implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="COD_REG")
private String codReg;
//bi-directional many-to-one association to Twb1013Provincia
@OneToMany(mappedBy="twb1012Regione")
private List<Twb1013Provincia> twb1013Provincias;
.................................................
.................................................
OTHER FIELDS
.................................................
.................................................
}
所以问题似乎是,当我尝试转换一个 Twb1013Provincia 对象时,它在其中找到一个本身包含的 Twb1012Regione 字段Twb1013Provincia...所以进入无限循环,无法转换。
那么我该如何解决这个问题呢?是否存在从 Twb1013Provincia 对象转换中排除 Twb1012Regione 字段的方法?
或者我可以更好地指定必须以 JSON 格式转换的 Twb1013Provincia class 字段的列表吗? (我只需要转换这个 class 的 2 个字段)
Tnx
您可以使用 @JsonIgnore 注释从序列化中排除一个字段。
尝试:
@JsonIgnore
private Twb1012Regione twb1012Regione;