Служба Spring Boot Rest: не удалось записать JSON: невозможно вызвать «java.lang.Integer.intValue()», поскольку атрибут JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Служба Spring Boot Rest: не удалось записать JSON: невозможно вызвать «java.lang.Integer.intValue()», поскольку атрибут

Сообщение Anonymous »

Я новичок в Spring Boot, и мне интересно, как разрешить JSON ответа включать нулевые значения для столбцов базы данных, которые могут иметь значение NULL. Это мой контроллер, сервис, репозиторий и модель:

Код: Выделить всё

package com.findersgame.questtracker.controller;

import java.util.List;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.findersgame.questtracker.model.MapArea;
import com.findersgame.questtracker.service.MapAreaService;

@RestController
public class MapAreaController {

private MapAreaService mapAreaService;

public MapAreaController(MapAreaService mapAreaService) {
super();
this.mapAreaService = mapAreaService;
}

@PostMapping("selected_map_areas")
public List selectedMapAreas(@RequestBody List selectedMapAreas) {
return mapAreaService.selectedMapAreas(selectedMapAreas);
}
}

Код: Выделить всё

package com.findersgame.questtracker.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import com.findersgame.questtracker.model.MapArea;
import com.findersgame.questtracker.repository.MapAreaRepository;

@Service
public class MapAreaService {

private MapAreaRepository mapAreaRepository;

public MapAreaService(MapAreaRepository mapAreaRepository) {
super();
this.mapAreaRepository = mapAreaRepository;
}

public List selectedMapAreas(List selectedIds) {
return mapAreaRepository.findAllById(selectedIds);
}
}

Код: Выделить всё

package com.findersgame.questtracker.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.findersgame.questtracker.model.MapArea;

public interface MapAreaRepository extends JpaRepository {

}

Код: Выделить всё

package com.findersgame.questtracker.model;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "map_areas")
public class MapArea {

@Id
private Integer id;

@Column
private Integer mapTabId;

@Column
private String name;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public Integer getMapTabId() {
return mapTabId;
}

public void setMapTabId(Integer mapTabId) {
this.mapTabId = mapTabId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
Моя проблема в том, что когда я вызываю http://localhost:8080/selected_map_areas с телом [14, 15, 16], я получаю следующую ошибку.

Код: Выделить всё

Resolved [org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Cannot invoke "java.lang.Integer.intValue()" because "this.mapTabId" is null]
Думаю, это имеет смысл, потому что в базе данных значение map_tab_id равно нулю как для идентификатора 15, так и для 16. Я предполагаю, что я пропустил аннотация в одном из классов/интерфейсов выше, но мне не удалось найти какой именно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-integer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»