Debug

"org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value : com.cos.blog.model.User.email; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient ..

배게 2022. 3. 14. 13:26
728x90
[에러 현상]
insert작업을 할 때 RequestBody의 데이터 MIME타입을
x-www-form-rulencoded로 했을 때는 문제가 없는데
raw(Json)의 형태로 하면 propertyValueException이 일어남
[에러 후보]
Json데이터의 형식을 실수함
[에러 원인]
Join메서드의 DTO인 User 패러미터 앞에 @RequestBody를 붙여주지 않아서
에러가 났던 것임..
근데 @RequestBody붙이니까 이젠 xxx-form-urlencoded방식으로 하니까 지원안한다는 식으로 뜸​

@ResponseBody를 붙이지 않으면 자동으로 @ModelAttribute가 붙는다고 한다..

이 둘의 차이 때문에 

Json은 @ResponseBody을 붙이고

xxx-form-urlencoded는 @ModelAttribute를 붙이는듯..?

 

@ModelAttribute는 파라미터 값으로 DTO객체에 바인딩을 하는 방식이기 때문에 바인딩하려는 DTO객체에 Setter메소드가 반드시 있어야 하고, (form태그로 받아옴)

@RequestBody는 요청 본문의 body에 json이나 xml값으로 요청을 하여 HttpMessageConveter를 반드시 거쳐 DTO객체에 맞는 타입으로 바꿔서 바인딩을 시켜준다.  (json, xml로  받아옴)

-> HttpMessageConverter의 Jackson 라이브러리가 받아주는 것임

 

 

 

 

 

 

 

 

 

 

 

User user -> @RequestBody User user