java - Jackson annotations not used with Spring boot -


i using spring boot 1.0.1.release , trying pick jackson annotations. more specifically, trying use @jsonmanagedreference , @jsonbackreference annotations. idea why might ignored? tried @jsonignore did not seem picked up.

i tried 2 things mentioned in question (moving jackson annotionations first , using list instead of set). looked @ this question on spring forums, not me either.

update:

this componenttype class:

@entity public class componenttype { // ------------------------------ fields ------------------------------      @id     @generatedvalue()     private long m_id;      private string m_name;      @jsonmanagedreference     @onetomany(cascade = cascadetype.all)     @joincolumn(name = "parent_id")     private list<componentsubtype> m_subtypes;  // --------------------------- constructors ---------------------------      public componenttype()     {     }      public componenttype( string name, iterable<componentsubtype> subtypes )     {         m_name = name;         m_subtypes = lists.newarraylist(subtypes);     }      // -------------------------- public methods --------------------------      public long getid()     {         return m_id;     }      public void setid( long id )     {         m_id = id;     }      public string getname()     {         return m_name;     }      public void setname( string name )     {         m_name = name;     }      public list<componentsubtype> getsubtypes()     {         return m_subtypes;     }      public void setsubtypes( list<componentsubtype> subtypes )     {         m_subtypes = subtypes;     }      public componentsubtype getsubtype( final long subtypeid )     {         return iterables.find( getsubtypes(), new predicate<componentsubtype>()         {             @override             public boolean apply( componentsubtype input )             {                 return input.getid() == subtypeid;             }         } );     } 

and componentsubtype:

@entity public class componentsubtype {     @id     @generatedvalue()     private long m_id;      private string m_name;      @jsonbackreference     @manytoone(fetch = fetchtype.lazy)     @joincolumn(name = "parent_id",insertable=false,updatable=false)     private componenttype m_componenttype;      public componentsubtype()     {     }      public componentsubtype( string name )     {         m_name = name;     }      public long getid()     {         return m_id;     }      public void setid( long id )     {         m_id = id;     }      public string getname()     {         return m_name;     }      public void setname( string name )     {         m_name = name;     }      public componenttype getcomponenttype()     {         return m_componenttype;     }      public void setcomponenttype( componenttype componenttype )     {         m_componenttype = componenttype;     } } 

the controller:

@restcontroller @requestmapping("/api/components") public class componenttypecontroller {     @autowired     private componenttyperepository m_repository;      @requestmapping("/list")     public iterable<componenttype> listcomponents()     {         return m_repository.findall();     } } 

and repository:

public interface componenttyperepository extends crudrepository<componenttype, long> { } 

in main create entities testing:

    configurableapplicationcontext context = springapplication.run( main.class, args ); componenttyperepository componenttyperepository = context.getbean( componenttyperepository.class ); componenttyperepository.save( new componenttype( "component a", sets.newhashset( new componentsubtype( "sub - 1" ), new componentsubtype( "sub - 2" ) ) ) ); componenttyperepository.save( new componenttype( "component b", sets.newhashset( new componentsubtype( "sub b - 1" ), new componentsubtype( "sub b - 2" ) ) ) ); componenttyperepository.save( new componenttype( "component c", sets.newhashset( new componentsubtype( "sub c - 1" ), new componentsubtype( "sub c - 2" ) ) ) ); componenttyperepository.save( new componenttype( "component d", sets.newhashset( new componentsubtype( "sub d - 1" ),                                                                                  new componentsubtype( "sub d - 2" ),                                                                                  new componentsubtype( "sub d - 3" ) ) ) ); 

if point browser http://localhost:8080/api/components/list, stackoverflow exception.

this part of stacktrace get:

java.lang.stackoverflowerror: null     @ java.lang.classloader.defineclass1(native method)     @ java.lang.classloader.defineclass(classloader.java:800)     @ java.security.secureclassloader.defineclass(secureclassloader.java:142)     @ java.net.urlclassloader.defineclass(urlclassloader.java:449)     @ java.net.urlclassloader.access$100(urlclassloader.java:71)     @ java.net.urlclassloader$1.run(urlclassloader.java:361)     @ java.net.urlclassloader$1.run(urlclassloader.java:355)     @ java.security.accesscontroller.doprivileged(native method)     @ java.net.urlclassloader.findclass(urlclassloader.java:354)     @ java.lang.classloader.loadclass(classloader.java:425)     @ sun.misc.launcher$appclassloader.loadclass(launcher.java:308)     @ java.lang.classloader.loadclass(classloader.java:358)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:660)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23)     @ com.fasterxml.jackson.databind.ser.std.asarrayserializerbase.serialize(asarrayserializerbase.java:183)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.beanpropertywriter.serializeasfield(beanpropertywriter.java:541)     @ com.fasterxml.jackson.databind.ser.std.beanserializerbase.serializefields(beanserializerbase.java:644)     @ com.fasterxml.jackson.databind.ser.beanserializer.serialize(beanserializer.java:152)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:117)     @ com.fasterxml.jackson.databind.ser.std.collectionserializer.serializecontents(collectionserializer.java:23) 

example project demonstrates problem:

download https://dl.dropboxusercontent.com/u/6373261/jackson-problem.zip

it's (old-fashioned imo) naming convention fields ("m_*"). jackson doesn't correlate them getters , setters. have either @jsonignore getters , setters, or change naming, or annotate getters. or maybe there feature in @jsonbackreference(...)? @jsonbackreference("componenttype") instance, might work.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -