title: jackson self reference leading to cycle
body: <p><br/>
  I have a problem when converting hibernate objects to JSON with Jackson, because some objects have a self-reference in their definition. 
  The problem is that I don't control the code of those entities so I cannot put annotations in there.</p>
  
  <p>Actually I would like to just limit the depth of the recursivity, for example to 5 levels. I need generic code that works with any entity object that contains self reference.. Is it possible? 
  I don't mind use another JSON library.</p>
  
  <p>The following simple code </p>
  
  <pre><code>ObjectMapper mapper = new ObjectMapper();
  
  Query q = session.createQuery("from Hazard ");
  List&lt;Hazard&gt; hazards = q.list();
  
  for (Hazard h : hazards) {
      String hazardJson;
      hazardJson = mapper.writeValueAsString(h);
  }
  </code></pre>
  
  <p>Gives me exception: </p>
  
  <pre>
  org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle (through reference chain: com.fgm.imsma.pojo.Hazard["location"]->com.fgm.imsma.pojo.Location["location"])
      at org.codehaus.jackson.map.ser.BeanPropertyWriter._reportSelfReference(BeanPropertyWriter.java:473)
      at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:411)
      at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
      at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
      at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
      at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
      at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
      at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:587)
      at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:245)
      at org.codehaus.jackson.map.ObjectMapper._configAndWriteValue(ObjectMapper.java:1993)
      at org.codehaus.jackson.map.ObjectMapper.writeValueAsString(ObjectMapper.java:1595)
      at imsma.json.GetObjects.main(GetObjects.java:47)
  
  </pre>
  
  <p>Thanks in advance for any suggestions!</p>