Spring Boot, данные Hibernate портят мои данные - PullRequest
0 голосов
/ 05 августа 2020

Итак, у меня есть веб-приложение, использующее Spring Framework. Я обрабатываю свои данные в спящем режиме, и до сих пор у меня не было никаких проблем. Я написал оператор получения сообщения в JS, и данные, которые он возвращает, верны. Данные представляют собой массив строк. Он возвращает правильно выглядящий массив в правильном порядке. Проблема в том, что когда я просматриваю данные сразу после массива, они находятся в другом порядке. Это так сбивает с толку, потому что я даже не вмешиваюсь в порядок массива, и у меня нет других запросов на выборку по URL-адресу. Я понятия не имею, какой код здесь отображать, потому что мой Java - простой объект передачи для сохранения в реальный объект. JS - это fetch(url,{...}).then(response => response.json()).then(data(This displays the correct array order) => {});. Залил правильно и все. Это странно, потому что данные, которые он возвращает, верны, а данные в базе данных неверны. Я делал это несколько раз раньше, и в этих случаях у меня никогда не было проблем.

Код контроллера

@RequestMapping(value="/editComment", method = RequestMethod.POST)
public Comment editComment(@RequestBody EditCommentDTO editCommentDTO) { 
    return commentService.editComment(editCommentDTO);
}

CommentService

    public Comment editComment(EditCommentDTO editCommentDTO) {
    Comment com = findById(editCommentDTO.getComId());
    com.setBody(editCommentDTO.getBody());
    System.out.println(save(com)); //Save goes to another function in the service that only executes commentRepository.save(com)
    return save(com);
}

Комментарий

@Entity
public class Comment {
(Extra stuff here such as id postId, userId)
@ElementCollection
private List<String> body;
(Getters and setters)
}

EditCommentDTO

public class EditCommentDTO {

private List<String> body;
private Long comId;

public List<String> getBody() {
    return body;
}
public void setBody(List<String> body) {
    this.body = body;
}
public Long getComId() {
    return comId;
}
public void setComId(Long comId) {
    this.comId = comId;
}
}

JS

console.log(stuff);  //stuff is an array of strings
  var jsonArray = JSON.parse(JSON.stringify(stuff));
  console.log(jsonArray);
  const data = { body: jsonArray, comId: comId};
  
  fetch('http://localhost:8080/editComment', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(data),
  })
  .then(response => response.json())
  .then(data => {
    console.log('Success:', data);
    console.log(data); //Displays the correct data
    $.getJSON("http://localhost:8080/getComments" function(cData){
      console.log(cData); //Displays the wrong data even though it should be the same as data
    });
  })
  .catch((error) => {
    console.error('Error:', error);
    errorPlace(error);
  });

1 Ответ

0 голосов
/ 05 августа 2020

Итак, я спросил в другом месте, на сервере Discord. Кто-то показал мне, что @ElementCollection, которое является аннотацией над телом моего списка в классе комментариев, не сохраняет порядок массива. Добавьте аннотацию @OrderColumn, и это должно исправить.

Благодарим LWJ за то, что он показал мне ответ.

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