작성
·
325
0
강의 15분쯤에 임베디드타입이 엔티티를 가질 수 있다고 하는 부분이 나와서 실습 해보려는데 잘 안되서 문의드립니다.
Address 임베디드 타입에 Person 이라는 Entitiy를 가지도록 하려고 하는데요. Address는 Member Entitiy에 속해있구요.
아래처럼 실행하면 에러가 나네요.
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on jpabook.start.Member.homeAddress.person references an unknown entity: jpabook.start.Person
Address 에서 Person을 참조할 때 어노테이션을 @OneToOne, @JoinColumn 을 사용하였는데 맞나요?
어쨋든 어노테이션을 빼도 에러가나고 다 에러가 납니다. ㅠㅠ
@Entity
@Table(name="member")
public class Member {
@Id
@Column(name = "id")
private String id;
@Column(name = "name")
private String username;
private Integer age;
@Embedded
private Address homeAddress;
@Embedded
private Period workPeriod;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@Embeddable
public class Address {
private String city;
private String street;
private String zipcode;
@OneToOne
@JoinColumn(name = "person_id")
private Person person;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
@Entity
public class Person {
@Id @GeneratedValue
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}