- 2011-12-22 11:15:58 org.apache.catalina.core.StandardWrapperValve invoke
- 嚴重: Servlet.service() for servlet spring threw exception
- org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"]->org.hibernate.collection.PersistentBag[0]->com.blog.pojo.Photo["album"]->com.blog.pojo.Album["photos"])
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:189)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442)
- at org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383)
- at org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
- at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
- at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:175)
- at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142)
這裏兩個實體類: Album(相冊) 和 photo(照片) 是一對多雙向關聯
死循環原因: JSON無法對Album的photos屬性進去JSON轉換
解決辦法:
在Album實體類上加註釋@JsonIgnoreProperties(value={"photos"})
- @Entity
- @SuppressWarnings("serial")
- @JsonIgnoreProperties(value={"photos"})
- public class Album implements java.io.Serializable {