본문 바로가기
JAVA

[postman][Spring] JPA 라이브러리로 API 전송 시 NULL 값 발생 해결 방법

by 알기 쉬운 코딩 사전 2023. 8. 26.
반응형

서론

 

Spring으로 JPA를 이용하여 DB 서버와 API를 POST 방식으로 요청하여 입력받는 코드를 작성하였습니다. Postman으로 api를 전송했지만 DB에는 계속해서 null 값이 저장되었습니다. 소스코드를 아무리 봐도 오타나 잘못 사용한 어노테이션은 없었습니다.

 

 

 

수정 전 User.java

package com.example.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user_tab")
public class User {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;

    private String email;

    private String mobile;

    private String address;

}

 

에러 발생 원인

 

lombok 라이브러리 때문에 발생한 에러였습니다. 가끔 데이터가 꼬일 때가 있다고 합니다.

 

해결 방법

 

lombok의 @Data를 사용하지 않고 getter과 setter toString을 직접 생성했습니다.

 

수정 후 User.java

package com.example.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@AllArgsConstructor//lombok anno
@NoArgsConstructor
@Entity//to create the table
@Table(name = "user_tab")//for the table name
public class User {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String userid;

    private String username;

    private String userps;

	public Integer getId() {
		return id;
	}

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

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getUserps() {
		return userps;
	}

	public void setUserps(String userps) {
		this.userps = userps;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", userid=" + userid + ", username=" + username + ", userps=" + userps + "]";
	}
	
	

}

 

드디어 db에 null 값이 아니라 제가 요청한 api가 전송되는 것을 확인할 수 있었습니다.

반응형

댓글