Open suminiee opened 4 months ago
이 방법 말고 ObjectNode saveObj을 이용하여 코드 작성함
ObjectNode 이용
ObjectMapper mapper = new ObjectMapper(); DiarySaveRequestDto diarySaveRequestDto = mapper.treeToValue(saveObj.get("diarySaveRequestDto"), DiarySaveRequestDto.class); LineUpNameSaveRequestDto lineUpNameSaveRequestDto = mapper.treeToValue(saveObj.get("lineUpNameSaveRequestDto"), LineUpNameSaveRequestDto.class);
그런데 무결성 관련하여 오류가 발생하여 (FK5mxldl0u6r8wf26ejm51n27h6) 데이터베이스 스키마 수정을 함. (DatabaseInitializer 클래스 작성하여 db 변경 저장)
DatabaseInitializer
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component public class DatabaseInitializer {
@Autowired
private JdbcTemplate jdbcTemplate;
@PostConstruct
public void init() {
try {
jdbcTemplate.execute("ALTER TABLE line_up_name_info DROP FOREIGN KEY FK5mxldl0u6r8wf26ejm51n27h6;");
jdbcTemplate.execute("ALTER TABLE line_up_name_info ADD CONSTRAINT FK5mxldl0u6r8wf26ejm51n27h6 FOREIGN KEY (diary_info) REFERENCES diary_info(diary_id);");
} catch (Exception e) {
// Handle exception or log the error
System.err.println("Database initialization failed: " + e.getMessage());
}
}
}
Postman에서 테스트 중이었는데 처음에는 RequestBody에 DTO를 여러개 주려고 했는데 오류가 발생함 찾아보니까 두 개 이상의 '@RequestBody'가 사용되는 경우 Spring MVC가 이를 처리할 수 없어서 오류가 발생한다고 한다. 두 개 이상의 DTO를 RequestBody로 주려고 하는 경우에는 DTO 여러개들을 하나의 래퍼 객체로 감싸서 사용해야 한다고 한다.