250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#8012#한동이는영업사원
- 백준#boj#16932#모양만들기
- 백준#BOJ#2615#오목
- 백준#BOJ#1939#중량제한
- 백준#boj#12755
- 백준#BOJ#14501#퇴사#브루트포스
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[JPA]Should have [public, protected] no-arg constructor?? 본문
JPA 를 사용하다보면 가끔 기본적인 개념조차 암기하지 않고 난방하는 경우가 생기는데 절대 이러지 말자!!
중요한건 기본기!!
제목과 같은 오류 메세지를 가끔 확인할 수 있는데 저 오류 메세지의 원인은 간단하다.
@Entity,@Embeddable 어노테이션을 사용하면 이 클래스는 테이블과 매핑할 클래스라는 것을 명시해준다.
이때 반드시 기본 생성자(no-arg constructor) 가 필수적이다.
그러니 @NoArgsConstructor
어노테이션을 붙여주던가 아니면 기본생성자를 입력해주자.
@Embeddable
@NoArgsConstructor //첫번째 방법
public class Address {
private String city;
private String street;
private String zipcode;
//public Address(){} //두번째 방법
public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
}
그러면 @RequiredArgsConstructor
랑 @AllArgsConstructor
어노테이션은 사용하면 안되겠네용?!
결론부터 말하면 사용해도 된다. 다만 주의할 점이 있는데
@AllArgsConstructor
어노테이션을 사용할때는 모든 필드값에 대한 생성자를 생성해주는 것이니 @NoArgsConstructor
를 같이 붙여줘야 한다.@RequiredArgsConstructor
어노테이션을 사용할 때도 마찬가지인데 이때 만약 필드값이 final
키워드가 붙지 않는 클래스라면 @NoArgsConstructor
를 붙여주지 않는다고 할지라도 자동으로 기본생성자가 생성이 된다.
@Embeddable
@RequiredArgsConstructor
public class Address {
private String city;
private String street;
private String zipcode;
}
'나의 개발 메모장' 카테고리의 다른 글
[static inner class]non-static inner classes like this can only by instantiated using default (0) | 2022.01.04 |
---|---|
@RequiredArgsConstructor 를 사용할때 주의점 (1) | 2021.12.24 |
[Spring]@Transactional 어노테이션을 사용하면 왜 쿼리 로그가 안보일까? (0) | 2021.12.11 |
[eclipse 오류] Starting Tomcat Server at localhost 에러 (0) | 2021.02.02 |
왜 알고리즘(ps)이 힘들까?? (4) | 2021.01.17 |