Hi Tatu! For now I solve issue changing from mapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.EVERYTHING); to mapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL);
Please see https://github.com/alex-t0/deserialization-fail-example/commit/5c1e9f73a21567c04823145993ffd09c314a276e#diff-590456d68d9f15ce57513829910aa370. *Now it does not wrap user id. And deserialization works fine.* But I'm not understand what you mean about @JsonIgnore'ing or removing my id field. It is a primary key and I need this field. If I add @JsonIgnore to id field I get this error: Caused by: java.lang.IllegalArgumentException: Invalid Object Id definition for deserialization.fail.example.User: cannot find property with name 'id' at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructObjectIdHandler(BeanSerializerFactory.java:491) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanOrAddOnSerializer(BeanSerializerFactory.java:414) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanOrAddOnSerializer(BeanSerializerFactory.java:286) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:231) at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:165) at com.fasterxml.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:1474) at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1422) ... 100 more PS. Can you reemove my second duplicate thread https://groups.google.com/forum/#!topic/jackson-user/MK8RLm8Unu0? On Tuesday, May 12, 2020 at 2:07:55 AM UTC+3, Tatu Saloranta wrote: > > On Mon, May 11, 2020 at 9:52 AM Alex T <[email protected] <javascript:>> > wrote: > > > > Hi everyone! > > > > When serializing entity with many references to another same entity, if > that entity marked @JsonIdentityInfo, first occurence of entity serialized > as full entity, other occurrences are serialized as id. Its work. > > I need to serialize entities with type information, so I use polymorphic > type handler. > > > > I created test project: > https://github.com/alex-t0/deserialization-fail-example.git > > > > Please see this classes: > > > > User - > https://github.com/alex-t0/deserialization-fail-example/blob/master/src/main/java/deserialization/fail/example/User.java > > > UserPair - > https://github.com/alex-t0/deserialization-fail-example/blob/master/src/main/java/deserialization/fail/example/UserPair.java > > > MapperUtil - > https://github.com/alex-t0/deserialization-fail-example/blob/master/src/main/java/deserialization/fail/example/MapperUtil.java > > > UserSerializationTest - > https://github.com/alex-t0/deserialization-fail-example/blob/master/src/test/java/deserialization/fail/example/UserSerializationTest.java > > > > > Serialization works as I expect: > > > > [ > > "deserialization.fail.example.UserPair", > > { > > "user1": [ > > "deserialization.fail.example.User", > > { > > "id": [ > > "java.lang.Long", > > 42 > > ], > > ^^^^^^^^^ > > This is wrong. Id should be plain number (`42`) and suggests the most > likely problem. > It should never be wrapped in type information (in fact, not even > normal `long`/`Long` properties, being > one of small number of "natural" types). > > Definition JsonIdentityInfo info is the problem in this case: > > @JsonIdentityInfo( > generator = ObjectIdGenerators.PropertyGenerator.class, > property = "id", > scope = User.class > ) > > ... because you are trying to use an actual physical field (`private > long Id`), but this definition would > try to generate new value and assumes there is no "real" field. > For using fields, you'd need to use > `ObjectIdGenerators.PropertyGenerator` (but then id must be populated > by your code). > > Alternatively you should either just remove the field (if not needed), > or, if needed for Hibernate or such, > add `@JsonIgnore` on it. > But assuming this Id value comes from DB (sequence?), the first option > is probably what you want. > > Combination of Hibernate module and JSON Identity might cause other > issues as well, since unfortunately Hibernate module > is not maintained and its support for Proxy types seems to cause > problems with some Jackson features. > Another possibility just for testing might be to try to not register > that module, just to isolate problematic component. > > I hope this helps, > > -+ Tatu +- > -- You received this message because you are subscribed to the Google Groups "jackson-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jackson-user/52f9385a-3185-439d-a1f0-c1f881587bfc%40googlegroups.com.
