JPA를 사용할 때 트랜잭션이 제대로 걸렸는데 NullPointerException이 뜨는 경우가 있다. 이럴 때 발생할 수 있는 경우를 하나씩 쌓으려고 한다. 1. DI가 제대로 되지 않았을 때 DI가 제대로 되지 않았다면 트랜잭션이 걸렸다 하더라도 값을 가져올 수 없어서 NullPointerException이 뜬다. 이 때, 확인해야할 부분은 주요 repository나 EntityManager를 @RequiredArgsConstruct로 했을 때, private final을 하지 않았는지를 확인해야한다.
메세지 기능을 사용해서 이런저런 메세지를 출력하려고 했을 때, 한글이 안 나오는 경우가 있다. 특히 "???"로 인코딩 되서 나오는 경우가 많은데, 이 경우는 아래 설정을 해줘야한다. File > Settings > File Encoding으로 간다. 하단에 있는 Properties Files에서 UTF-8을 설정해주고 Transparent native-to-ascii conversion을 설정해준다.
스프링 시작 시, 위와 같은 에러가 발생하며 톰캣 서버가 켜지지 않는 경우가 있었다. 이 때는 build.gradle에 아래 코드를 제거해주면 된다. providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' "IntelliJ 무료 버전의 경우 해당 설정을 IntelliJ IDEA가 아니라 Gradle로 설정해야 합니다. Jar 파일의 경우는 문제가 없는데, War의 경우 톰캣이 정상 시작되지 않는 문제가 발생할 수 있습니다. 유료 버전은 모두 정상 동작합니다. 또는 `build.gradle`에 있는 다음 코드를 제거해도 됩니다" 라고 한다. 안녕하세요. - 인프런 | 질문 & 답변 (inflearn.com)
JPA로 MappedSuperClass를 사용해서 필드 변수를 뿌려주려고 BaseEntity를 등록했다. 등록하는 과정에서 "Exception in thread "main" org.hibernate.AnnotationException: An entity cannot be annotated with both @Entity and @MappedSuperclass: test.BaseEntity" 에러가 발생했다. @Entity @MappedSuperclass public abstract class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDa..
JPA 메인 함수를 작성하고, 돌리려고 시도를 하던 도중에 위와 같은 에러를 만났다. 다대다 연관관계를 다대일, 일대다 연관관계로 풀어주는 테이블에서 이런 에러가 발생했다. @Entity @Table(name = "ORDER") public class MemberProduct { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @ManyToOne @JoinColumn(name = "MEMBER_ID") private Member member; @ManyToOne @JoinColumn(name = "PRODUCT_ID") private Product product; private int orderAmount; private LocalDate..