Состояние: 415, ошибка: «Неподдерживаемый тип носителя» - для запроса POST OneToMany - отношение ManyToOne - PullRequest
0 голосов
/ 15 марта 2019

Я пытался решить эту проблему в течение 2 дней, я прочитал все и перепробовал много вариантов, но ничего не происходит, и я не вижу, в чем я не прав.Мне просто нужно добавить запись таблицы, которая объединяет 2 другие таблицы.Я прошу прощения за длинное описание, но я просто хотел быть исчерпывающим
Это соотношение между таблицами enter image description here

Это мой код:
Класс пользователя

import com.fasterxml.jackson.annotation.*;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;

@Column(name = "FirstName")
private String firstName;

@Column(name = "LastName")
private String lastName;

@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
@JsonIgnore
private List<ProductRatings> userGroups = new ArrayList<>();

public User() {}
}

Класс продукта

import com.fasterxml.jackson.annotation.*;  
import org.hibernate.annotations.Fetch;  
import org.hibernate.annotations.FetchMode;  
import javax.persistence.*;  
import javax.validation.constraints.DecimalMax;  
import javax.validation.constraints.DecimalMin;  
import javax.validation.constraints.Size;  
import java.util.ArrayList;  
import java.util.List;  

@Entity  
@Table(name = "products")  
public class Product{  
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;

@Column(name = "Name")
private String name;

@OneToMany(mappedBy = "product", fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@JsonIgnore
private List<ProductRatings> productGroups = new ArrayList<>();

public Product() {}
}

ProductRating class

import javax.persistence.*;  
@Entity  
@Table(name = "product_ratings")  
public class ProductRatings {  

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;

@Column(name = "Rating")
private int rating;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "UserID")
private User user;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "ProductID")
private Product product;

public ProductRatings() {}
}  

Это мой запрос почтальона
Post request Это статус запроса
enter image description here
И, наконец, код в консоли IDEA
2019-03-15 20: 44: 30.150 WARN 7288 --- [nio-8080-exec-1] .cjMappingJackson2HttpMessageConverter: Не удалосьоценить десериализацию Джексона для типа [[простой тип, класс com.teamwork_2.producttag.models.ProductRatings]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: не удается обработать управляемую / обратную ссылку 'defaultReference': тип обратной ссылки (java.util.List) несовместим с управляемым типом (com.teamwork_2. producttag.models.Product)

2019-03-15 20:44:30.158  WARN 7288 --- [nio-8080-exec-1] .c.j.MappingJackson2HttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class com.teamwork_2. producttag.models. ProductRatings]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'defaultReference': back reference type (java.util.List) not compatible with managed type (com.teamwork_2. producttag.models. Product)   

2019-03-15 20:44:30.174  WARN 7288 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported]  

1 Ответ

0 голосов
/ 19 марта 2019

Это связано с непредвиденным вводом в клиент REST.Попробуйте добавить

Тип содержимого: application / json

и

Accept: application / json

в разделе заголовка REST Client.

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

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