我正在嘗試使用 REST api,并在創建 JSON 后呼叫后,將空值寫入資料庫,而不是用 JSON 寫入的值。
我正在使用 PostgreSQL 資料庫。
在我使用 Postman 或 Swagger 發送 JSON 后,我得到服務器回應代碼:200。但資料庫將顏色寫為 null。
例子:
JSON:
{
"color": "string"
}
服務器回應:
{
"id": 2,
"color": null
}
connection: keep-alive
content-type: application/json
date: Thu06 Oct 2022 13:27:09 GMT
keep-alive: timeout=60
transfer-encoding: chunked
如果我不小心直接在其中犯了一些錯誤,我還在這里添加了 application.properties 檔案。
專案結構:
- 控制器
- dto
- 模型
- 存盤庫
- 服務
應用程式屬性
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/democalendareventapp
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.generate-dll=true
spring.datasource.hikari.maximumPoolSize=2
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL10Dialect
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
型號:EventCategoryColor
package com.radocode.DemoCalendarEventApp.model;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Entity
@NoArgsConstructor
@Data
@Table(name = "EventCategoryColor")
public class EventCategoryColor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String color;
public EventCategoryColor(String color) {
this.color = color;
}
}
存盤庫:EventCategoryColorRepository
package com.radocode.DemoCalendarEventApp.repository;
import com.radocode.DemoCalendarEventApp.model.EventCategoryColor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EventCategoryColorRepository extends CrudRepository<EventCategoryColor, Long> {
}
服務 - 介面:EventCategoryColorService
package com.radocode.DemoCalendarEventApp.service;
import com.radocode.DemoCalendarEventApp.dto.requestDto.EventCategoryColorRequestDto;
import com.radocode.DemoCalendarEventApp.model.EventCategoryColor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface EventCategoryColorService {
public EventCategoryColor addColor(EventCategoryColorRequestDto eventCategoryColorRequestDto);
public List<EventCategoryColor> getColors();
public EventCategoryColor getColor(Long id);
public EventCategoryColor deleteColor(Long id);
public EventCategoryColor editColor(Long id, EventCategoryColorRequestDto eventCategoryColorRequestDto);
}
服務:EventCategoryColorServiceImp
package com.radocode.DemoCalendarEventApp.service;
import com.radocode.DemoCalendarEventApp.dto.requestDto.EventCategoryColorRequestDto;
import com.radocode.DemoCalendarEventApp.model.EventCategoryColor;
import com.radocode.DemoCalendarEventApp.repository.EventCategoryColorRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
public class EventCategoryColorServiceImpl implements EventCategoryColorService {
private final EventCategoryColorRepository eventCategoryColorRepository;
@Autowired
public EventCategoryColorServiceImpl(EventCategoryColorRepository eventCategoryColorRepository) {
this.eventCategoryColorRepository = eventCategoryColorRepository;
}
@Override
public EventCategoryColor addColor(EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor eventCategoryColor = new EventCategoryColor();
eventCategoryColor.setColor(eventCategoryColor.getColor());
return eventCategoryColorRepository.save(eventCategoryColor);
}
@Override
public List<EventCategoryColor> getColors() {
List<EventCategoryColor> colors = new ArrayList<>();
eventCategoryColorRepository.findAll().forEach(colors::add);
return colors;
}
@Override
public EventCategoryColor getColor(Long id) {
return eventCategoryColorRepository.findById(id).orElseThrow(() ->
new IllegalArgumentException("Color with Id: " id ", could not be found"));
}
@Override
public EventCategoryColor deleteColor(Long id) {
EventCategoryColor eventCategoryColor = getColor(id);
eventCategoryColorRepository.delete(eventCategoryColor);
return eventCategoryColor;
}
@Transactional
@Override
public EventCategoryColor editColor(Long id, EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor colorToEdit = getColor(id);
colorToEdit.setColor(eventCategoryColorRequestDto.getColor());
return colorToEdit;
}
}
dto:EventCategoryColorRequestDto
package com.radocode.DemoCalendarEventApp.dto.requestDto;
import lombok.Data;
@Data
public class EventCategoryColorRequestDto {
private String color;
}
控制器:EventCategoryColorController
package com.radocode.DemoCalendarEventApp.controller;
import com.radocode.DemoCalendarEventApp.dto.requestDto.EventCategoryColorRequestDto;
import com.radocode.DemoCalendarEventApp.model.EventCategoryColor;
import com.radocode.DemoCalendarEventApp.service.EventCategoryColorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/event-category-color")
public class EventCatogeryColorController {
private final EventCategoryColorService eventCategoryColorService;
@Autowired
public EventCatogeryColorController(EventCategoryColorService eventCategoryColorService) {
this.eventCategoryColorService = eventCategoryColorService;
}
@PostMapping("/add")
public ResponseEntity<EventCategoryColor> addColor(
@RequestBody final EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor eventCategoryColor = eventCategoryColorService.addColor(eventCategoryColorRequestDto);
return new ResponseEntity<>(eventCategoryColor, HttpStatus.OK);
}
@GetMapping("/get/{id}")
public ResponseEntity<EventCategoryColor> getColorById(@PathVariable final Long id) {
EventCategoryColor eventCategoryColor = eventCategoryColorService.getColor(id);
return new ResponseEntity<>(eventCategoryColor, HttpStatus.OK);
}
@GetMapping("/get-all")
public ResponseEntity<List<EventCategoryColor>> getColors() {
List<EventCategoryColor> eventCategoryColors = eventCategoryColorService.getColors();
return new ResponseEntity<>(eventCategoryColors, HttpStatus.OK);
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<EventCategoryColor> deleteColor(@PathVariable final Long id) {
EventCategoryColor eventCategoryColor = eventCategoryColorService.deleteColor(id);
return new ResponseEntity<>(eventCategoryColor, HttpStatus.OK);
}
@PutMapping("/edit/{id}")
public ResponseEntity<EventCategoryColor> editColor(
@PathVariable final Long id,
@RequestBody final EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor eventCategoryColor = eventCategoryColorService.editColor(id, eventCategoryColorRequestDto);
return new ResponseEntity<>(eventCategoryColor, HttpStatus.OK);
}
}
uj5u.com熱心網友回復:
您將新創建的物體的顏色值設定為此時未初始化的物體:
@Override
public EventCategoryColor addColor(EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor eventCategoryColor = new EventCategoryColor();
eventCategoryColor.setColor(eventCategoryColor.getColor());
return eventCategoryColorRepository.save(eventCategoryColor);
}
應該:
@Override
public EventCategoryColor addColor(EventCategoryColorRequestDto eventCategoryColorRequestDto) {
EventCategoryColor eventCategoryColor = new EventCategoryColor();
eventCategoryColor.setColor(eventCategoryColorRequestDto.getColor());
return eventCategoryColorRepository.save(eventCategoryColor);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511372.html
上一篇:在一段時間內平均變數
