👉 기본 환경
- Language: Java
- DB: H2 Database
- IDE: IntelliJ
⌨️ 코드
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
|
import javax.persistence.*;
import java.util.List;
@Entity
public class Tmp {
@Id @GeneratedValue
@Column(name = "TMP_ID")
private Long id;
@OneToMany(mappedBy = "temp")
private List<TmpItem> tmpItems;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<TmpItem> getTmpItems() {
return tmpItems;
}
public void setTmpItems(List<TmpItem> tmpItems) {
this.tmpItems = tmpItems;
}
}
|
🖨️오류
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Exception in thread "main" org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: jpabook.jpashop.domain.TmpItem.temp in jpabook.jpashop.domain.Tmp.tmpItems
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:844)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:795)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:53)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1693)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1661)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:286)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1214)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1245)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at jpabook.jpashop.JpaMain.main(JpaMain.java:15)
|
📡 원인
@OneToMany에서 매핑되는 TmpItem Entity에서 참조할 필드가 없음
📰 해결 방법
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
|
import javax.persistence.*;
import java.util.List;
@Entity
public class Tmp {
@Id @GeneratedValue
@Column(name = "TMP_ID")
private Long id;
@OneToMany(mappedBy = "tmp")
private List<TmpItem> tmpItems;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<TmpItem> getTmpItems() {
return tmpItems;
}
public void setTmpItems(List<TmpItem> tmpItems) {
this.tmpItems = tmpItems;
}
}
|
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
31
|
import javax.persistence.*;
@Entity
public class TmpItem {
@Id
@GeneratedValue
@Column(name = "TMP_ITEM_ID")
private Long id;
@ManyToOne
@JoinColumn(name = "TMP_ID")
private Tmp tmp;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Tmp getTmp() {
return tmp;
}
public void setTmp(Tmp tmp) {
this.tmp = tmp;
}
}
|
TmpItem Entity에 매핑된 필드와 동일한 이름으로 변경
- @OneToMany(mappedBy = "temp") ▶ @OneToMany(mappedBy = "tmp")
'Java > JPA with Error' 카테고리의 다른 글
[해결 방법] org.hibernate.MappingException (0) | 2023.09.13 |
---|---|
[해결 방법] org.hibernate.exception.ConstraintViolationException (0) | 2023.09.10 |
[해결 방법] org.hibernate.AnnotationException (0) | 2023.08.16 |
[해결 방법] org.hibernate.AnnotationException (0) | 2023.08.16 |
[해결 방법] org.hibernate.MappingException (0) | 2023.08.05 |