Mit Jackson Hibernate Datentypen nach JSON serialisieren (Spring)

Um Java-Objekte in JSON umzuwandeln, kann man die Jackson Library verwenden. Will man aber Hibernate-Objekte damit serialisieren, bekommt man z.B. bei lazy-geladenen Eigenschaften Probleme, da Jackson damit nicht umgehen kann. Typischerweise hat man eine Fehlermeldung wie „could not initialize proxy – no Session“.

Damit Jackson auch mit Hibernate-Objekten korrekt umgehen kann, muß man deren Add-on Modul jackson-datatype-hibernate verwenden:

Die Verwendung funktioniert folgendermaßen:

  • Maven dependency hinzufügen (in <version> die aktuelle Version angeben, momentan 2.8.8)

  • eine neue Object-Mapper Klasse erstellen, den Jackson Object-Mapper erweitern und dort das Modul registrieren

  • in der Spring Konfiguration diesen Object-Mapper einstellen

Nun werden Lazy-loaded Objekte standardmäßig als null serialisiert. Man kann aber auch einstellen, dass diese automatisch nachgeladen werden sollen: