복합키 에러 : Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Property of @IdClass not found in

Yunny.Log ·2023년 1월 13일
0

Debugging

목록 보기
61/69
post-thumbnail

Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Property of @IdClass not found in

  • 라는 에러가 발생했습니다.
  • @IdClass 라는 단어가 언급되는 것부터가 복합키와 관련된 에러임을 짐작하게 해줍니다.

Property of @IdClass not found in entity ••• [field name]
IdClass에서의 field name과 entity의 field name이 다를 때 나타나는 에러

  • 위와 같은 사항 때문에 난 에러라고 합니다.

< 복합키 클래스 >

  • idclass에서의 필드명은 classification1,2,3,4 ,,, 로 작명

  • 그러나 엔티티에서의 필드명은 itemClassification1,2,3,4,,, 로 idClass에서 정의한 필드명과 다른 것을 확인할 수 있었습니다.

  • 따라서 위 두 필드명을 itemClassification으로 통일해주었습니다.

reference

https://kha0213.github.io/jpa/jpa-composite-key/

plus : 복합키 4 조건

https://www.programmergirl.com/jpa-hibernate-identifiers/

  1. @EmbeddedId or @IdClass 의 annotation을 붙여야한다.
  2. public 의 no-args constructor 가 있어야 한다.
  3. Serializable 를 implement 받아야 한다.
  4. equals() 와 hashCode() method를 override해야 한다. (Id Class도)

0개의 댓글