반응형
Member 객체를 em.persist() 할려고 할 때 개체를 알 수 없다는 오류가 떴다.
entity 로 인식을 못한다는 오류라 persistence.xml 의 설정의 추가작업이 필요하다.
여러 정보를 찾아본 결과 스프링에서 자동으로 매핑 개체를 찾아준다고 들었는데 아마 버전의 문제인지는 더 찾아봐야알거 같다. 일단 필자는 다음과 같이 해결했다.
package com.example.demo;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Entity
@Table(name = "member")
@Getter
@NoArgsConstructor
public class Member {
@Id
@Column(name = "member_pk", nullable = false)
private Integer memberPk;
@Column(name = "member_id")
private String memberId;
@Column(name = "member_pw")
private String memberPw;
public Member(Integer memberPk, String memberId, String memberPw) {
this.memberPk = memberPk;
this.memberId = memberId;
this.memberPw = memberPw;
}
public Integer getMemberPk() {
return memberPk;
}
public void setMemberPk(Integer memberPk) {
this.memberPk = memberPk;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberPw() {
return memberPw;
}
public void setMemberPw(String memberPw) {
this.memberPw = memberPw;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="ssafy"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&serverTimezone=UTC"/>
<!-- 하이버네이트 사용 시 다른 DB에서 MySQL 문법을 사용 가능하도록 변경.-->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
<!-- 콘솔에 SQL 출력 여부 -->
<property name="hibernate.show_sql" value="true"/>
<!-- 가독성 높여주는 formatting 여부 -->
<property name="hibernate.format_sql" value="true"/>
<!-- Comment 확인 여부 -->
<property name="hibernate.use_sql_comments" value="true"/>
</properties>
</persistence-unit>
</persistence>
persistence.xml 에서 아래의 정보를 추가 입력하였다.
<persistence-unit name="hello">
<class>com.example.demo.Member</class>
<properties>
스프링 부트 2.4.7 에서 2.7.5 버전으로 바꾸니
<class>com.example.demo.Member</class>
이 부분이 없어도 자동으로 entity를 매핑시켜준다.
반응형
'기타 > 오류' 카테고리의 다른 글
[Problem] InteliJ 테스트창 한글 깨짐 (0) | 2023.01.12 |
---|---|
[Problem] org.hibernate.id.IdentifierGenerationException (1) | 2023.01.07 |
[Problem] Java error: error while writing [클래스 이름] (0) | 2022.12.30 |
[Problem] MySQL 에러 Duplicate foreign key constraint name (0) | 2022.12.28 |
[Problem] Port 8080 was already in use 에러 (0) | 2022.05.31 |
댓글