1

I have my User and Authority classes in related as follows

public class User {
    @JsonIgnoreProperties(value = "users", allowSetters = true)
    @ManyToMany(fetch = FetchType.EAGER) //To avoid MultipleBagFetchException
    @Fetch(value = FetchMode.SUBSELECT)
    @LazyCollection(LazyCollectionOption.FALSE)
    @JoinTable(
        name = "USER_AUTHORITY",
        joinColumns = {@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")},
        inverseJoinColumns = {@JoinColumn(name = "AUTHORITY_ID", referencedColumnName = "ID")})
    private List<Authority> authorities = new ArrayList<Authority>();
}

public class Authority {
    @JsonIgnoreProperties(value = "authorities", allowSetters = true)
    @ManyToMany(mappedBy = "authorities", fetch = FetchType.LAZY)
    private List<User> users = new ArrayList<User>();
}

Updating User gives me the following error

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot invoke "com.fasterxml.jackson.databind.JsonDeserializer.getObjectIdReader()" because "valueDes" is null; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Cannot invoke "com.fasterxml.jackson.databind.JsonDeserializer.getObjectIdReader()" because "valueDes" is null (through reference chain: com.siraafalagi.siraAfalagi.model.User["jobApplications"]->java.util.ArrayList[0]->com.siraafalagi.siraAfalagi.model.JobApplication["jobSeekers"]->java.util.ArrayList[0]->com.siraafalagi.siraAfalagi.model.JobSeeker["jobSeekerAddingUser"]->com.siraafalagi.siraAfalagi.model.User["authorities"])

Caused by: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonDeserializer.getObjectIdReader()" because "valueDes" is null
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:276) ~[jackson-databind-2.11.4.jar:2.11.4]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:249) ~[jackson-databind-2.11.4.jar:2.11.4]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26) ~[jackson-databind-2.11.4.jar:2.11.4]
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) ~[jackson-databind-2.11.4.jar:2.11.4]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:371) ~[jackson-databind-2.11.4.jar:2.11.4]
... 124 common frames omitted

I have seen an open issue here. What's the work around for this problem?

Dejazmach
  • 742
  • 8
  • 15

1 Answers1

2

In my case, adding allowSetters = true on @JsonIgnoreProperties on all the cascaded classes using the annotation helped fix this issue.

Dejazmach
  • 742
  • 8
  • 15