проблемы хранения данных в базе данных в весенней загрузке приложения - PullRequest
0 голосов
/ 26 июня 2018

Я получаю сообщение об ошибке при использовании почтового запроса для сохранения данных в базе данных в приложении весенней загрузки.У меня есть много-много сопоставлений между классами.У меня нет проблем при извлечении данных из базы данных, но когда я пытаюсь сохранить данные в базе данных, я получаю эту ошибку.

2018-06-26 12:19:32.016  WARN 3156 --- [nio-8080-exec-1] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.greydelta.entity.Permission]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (java.util.List) not compatible with managed type (com.greydelta.entity.Role)
2018-06-26 12:19:32.018  WARN 3156 --- [nio-8080-exec-1] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.greydelta.entity.Permission]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (java.util.List) not compatible with managed type (com.greydelta.entity.Role)

Я использую @JsonManagedReference и @JsonBackReference в родительскоми дочерние классы сущностей.

Вот мои сопоставления Child класс:

    // test this mapping
@ManyToMany(mappedBy="permissions",
        cascade={ CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
@JsonBackReference
private List<Role> roles;

Parent класс:

    // test this mapping
@ManyToMany(fetch = FetchType.EAGER,
        cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH})
@JoinTable( name="role_permission",
            joinColumns= {@JoinColumn(name="role_id")},
            inverseJoinColumns= {@JoinColumn(name="permission_id")})
@JsonManagedReference
private List<Permission> permissions; // create getter/setter

ОБНОВЛЕНИЕ:

Вот URLЯ отправил запрос POST для создания роли: localhost: 8080 / role

Вот ответ, который я получаю в Postman:

{
    "timestamp": "2018-06-26T08:18:03.167+0000",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'application/json;charset=UTF-8' not supported",
    "path": "/roles"
}

и вот метод контроллера:

@PostMapping("/roles")
public void createRole(@RequestBody Role theRole) {     

    roleService.createRole(theRole);

}

1 Ответ

0 голосов
/ 27 июня 2018

Я решил эту проблему, удалив @JsonManagedReference.Если у вас есть более двух сущностей, которые отображаются вместе, вам нужно удалить @JsonManagedReference в каждом классе сущностей.Я нашел это решение здесь:

Spring REST, JSON "Не удается обработать управляемую / обратную ссылку 'defaultReference'" 415 Неподдерживаемый тип носителя .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...