3월, 2021의 게시물 표시

Field 'id' doesn't have a default value

이미지
 2021-03-22 10:49:58.279 ERROR 1221 --- [io-8080-exec-10] o.h.engine.jdbc.spi.SqlExceptionHelper   : Field 'id' doesn't have a default value 'id'에 기본값이 없습니다. 번역필드 'id Entity에 분명 기본으로 값이 생성되게 만들었는데요...? mysql / DBeaver 사용중인데 확인해보니 AI 체크가 되어있지 않았습니다. 즉, JPA만 자동생성하도록 옵션을 넣어주고 DB에 자동 생성하는 설정을 붙이지 않아서 입니다.

[JAVA] Lombok의 생성자 어노테이션

Lombok의 생성자 어노테이션인 3가지의 차이점을 알아보겠다. @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor 1. @NoArgsConstructor 파라미터 변수가 없는 생성자를 만들어준다. * 자바에서 기본적으로 아무 생성자도 선언해주지 않으면 기본적으로 파라미터가 없는 생성자를 자동으로 만들어준다. 2. @RequiredArgsConstructor 필수 파라미터 (@NotNull 변수 혹은 초기화 되지않은 Final변수)를 포함한 생성자를 만들어준다. 3. @AllArgsConstructor 해당 클래스의 모든 변수를 포함한 생성자를 만들어준다. public class LombokConstructor { @NotNull private String var1 ; private String var2 ; private String var3 ; // @NoArgsConstructor public LombokConstructor () { } // @RequiredArgsConstructor public LombokConstructor ( String var1 ) { this . var1 = var1 ; } // @AllArgsConstructor public LombokConstructor ( String var1 , String var2 , String var3 ) { this . var1 = var1 ; this . var2 = var2 ; this . var3 = var3 ; } } // 참고 // https://inseok9068.github.io/java/java-lombok-constructor/

[JPA] @EmbeddedId 사용법

JPA Entity를 구현하려면 다음 규칙을 지켜져야한다. 모든 Entity 클래스는 @Id 설정이 필요 하다. 이때 @Id로 설정된 값에는 null값이 올 수 없다 . 기본키가 복합키인 경우에는 @EmbeddedId 혹은 @IdClass를 사용한다. 테이블에 Primary Key가 없는 경우가 있을 수 있다. 이 경우에는 Unique한 컬럼을 기준으로 @Id annotation을 붙이면된다 . pk를 설정하지 않으려했지만 1번의 이유로 복합키를 아래와 같은 방식으로 적용함. 3.1.  @Embeddable @Embeddable public class BookId implements Serializable { private String author; private String name; // standard getters and setters } 3.2.  @Entity  and  @EmbeddedId @Entity public class Book { @EmbeddedId private BookId id; private String genre; private Integer price; //standard getters and setters   }   <참고> https://www.baeldung.com/spring-jpa-embedded-method-parameters