Ошибка при отправке ответа в Spring MVC

167
20 июня 2018, 05:30

Здравствуйте возникла проблема со Spring MVC, пример заключается в следующем:

Controller

@RestController
public class ResultsTabController extends AdminRoomController {
    @Autowired
    private ResultUsersService resultUsersService;
    ...
    @RequestMapping(value = "/adminRoom/results/getResults", method = RequestMethod.GET)
    public List<ResultUser> getAllResultstUsers(){
        logger.trace("Request[/adminRoom/results/getResults] for get all the results users.");
        return resultUsersService.getAllResultsUsers();
    }
    ...
}

Service

@Service
public class ResultUsersServiceImpl implements ResultUsersService {
    @Autowired
    private ResultUserRepository resultUserRepository;
    ...
    public List<ResultUser> getAllResultsUsers() {
        return resultUserRepository.findAll();
    }
    ...
}

Entity

@Entity
@Table(name = "results")
public class ResultUser {
    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    @Column(name = "id", unique = true, nullable = false)
    private int id;
    @Column(name = "time", nullable = true)
    private Timestamp time;
    @Column(name = "result", nullable = false, length = 15)
    private String result;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_user", nullable = false)
    private User user;
    public ResultUser() {}
    public ResultUser(Timestamp time, String result, User user) {
        this.time = time;
        this.result = result;
        this.user = user;
    }
    // Getter and setters
}   

Request

var self = this;
axios.get('/adminRoom/results/getResults').then(function (response) {
    for (var i = 0; i < response.data.length; i++) {
        self.$root.$data.results.push({
            name : response.data[i].user.name,
            login : response.data[i].user.login,
            data : response.data[i].data,
            result : response.data[i].result
        });
   }
});

И в ответ я принимаю крайне непонятную вещь, получается что ответ зацикливается чтоли... Хотя на сервере принтами выводил информация как надо приходит в контроллер, а вот из контроллера к клиенту приходит следующее:

[{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":{"id":6,"login":"vov","password":"202cb962ac59075b964b07152d234b70","name":"vovka","resultsUser":[{"id":1,"time":"May 17, 2018 4:38:42 PM","result":"0/7","user":

Это не весь ответ... Ошибка которую выдает мне Google Chrome: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING Error: Network Error at e.exports (spread.js:25) at XMLHttpRequest.l.onerror (spread.js:25)

Юуду очень благодарен тому, кто подскажет в чем дело, потому уже и не знаю, что с этим делать...

Answer 1

У вас ResultUser вытягивает User ,а User вытягивает ResultUser циклически. Добавьте аннотации:

@JsonManagedReference
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_user", nullable = false)
private User user;

А в User :

@JsonBackReference
@OneToMany
...
READ ALSO
JavaFX изменить Text вне контроллера

JavaFX изменить Text вне контроллера

Я новичок, совсем, поэтому мне пожалуйста как нубу

229
Авторизация средствами AuthorizationService

Авторизация средствами AuthorizationService

коллеги! Опишу кратко ситуацию (приготовтесь к тяжелому материалу): Есть приложение с авторизацией через сайт, средствами вот этой библиотеки...

171
Смешиваются потоки

Смешиваются потоки

Подскажите, где может быть проблема: Имею сервер, к которому соединяются устройства по tcp socket, на каждое красиво создаётся потокСоединившись,...

189
Выдаёт ошибку при компилиции, пока не дошел до switch

Выдаёт ошибку при компилиции, пока не дошел до switch

Выдаёт ошибку при компилиции, пока не дошел до switch всё идёт нормально, а потом ошибкаГде моя ошибка?

164