Error creating bean with name entityManagerFactory defined in class path res

해결

Dto 패키지의 User클래스 완성하여 해결

package com.test.Dto; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.hibernate.annotations.CreationTimestamp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity //@DynamicInsert //insert시에 null인 필드를 제외시켜준다. public class User { @Id //Primary key @GeneratedValue(strategy = GenerationType.IDENTITY)//프로젝트에서 연결된 DB의 넘버링 전략을 따라간다. private int id;//시퀀스, auto_increment @Column(nullable = false, length = 100) private String username; @Column(nullable = false, length = 100) //123456=> 해쉬 (비밀번호 암호화) private String password; @Column(nullable = false, length = 50) private String email; //@ColumnDefault("'user'") @Enumerated(EnumType.STRING) private RoleType role; //Enum을 쓰는게 좋다. // admin, user, manager private String oauth; //kakao. google @CreationTimestamp //시간이 자동 입력 private Timestamp createDate; }

원인

application.yml 파일에서

MySQL 서버 연결시키고

JPA로 테이블 생성하게 설정한 뒤

User클래스 미완성하였더니

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.test.Dto.User

이런 오류가 떴다.


미완성사례 1)

package com.test.Dto; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.hibernate.annotations.CreationTimestamp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Entity //@DynamicInsert //insert시에 null인 필드를 제외시켜준다. public class User { private int id;//시퀀스, auto_increment }

미완성사례 2)

package com.test.Dto; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.hibernate.annotations.CreationTimestamp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity //@DynamicInsert //insert시에 null인 필드를 제외시켜준다. public class User { private int id;//시퀀스, auto_increment }

해결 예제)

package com.test.Dto; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.hibernate.annotations.CreationTimestamp; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor @Builder @Entity //@DynamicInsert //insert시에 null인 필드를 제외시켜준다. public class User { @Id //Primary key @GeneratedValue(strategy = GenerationType.IDENTITY)//프로젝트에서 연결된 DB의 넘버링 전략을 따라간다. private int id;//시퀀스, auto_increment @Column(nullable = false, length = 100) private String username; @Column(nullable = false, length = 100) //123456=> 해쉬 (비밀번호 암호화) private String password; @Column(nullable = false, length = 50) private String email; //@ColumnDefault("'user'") @Enumerated(EnumType.STRING) private RoleType role; //Enum을 쓰는게 좋다. // admin, user, manager private String oauth; //kakao. google @CreationTimestamp //시간이 자동 입력 private Timestamp createDate; }

application.yml 참고 설정)

server: port: 8030 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: mvc: view: prefix: /WEB-INF/view/ suffix: .jsp datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Seoul username: testuser password: 1111 jpa: open-in-view: true hibernate: ddl-auto: create naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl use-new-id-generator-mappings: false show-sql: true properties: hibernate.format_sql: true jackson: serialization: fail-on-empty-beans: false cos: key: cos1234