Я недавно начал свой первый Java-проект, который использует Hibernate (и аннотации JPA) для персистентности.
У меня есть следующие классы:
Класс пользователя
*some imports*
@Entity
public class Owner {
private int id;
private String name;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id")
private Pet pet;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setPet(Pet pet) {
this.pet = pet;
}
public Pet getPet() {
return pet;
}
}
Класс питомца
*some imports*
@Entity
public class Pet {
private String name;
@Id
@GeneratedValue
private int id;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Всякий раз, когда я пытаюсь сохранить объект, Hibernate выдает следующую ошибку:
Exception in thread "main" org.hibernate.MappingException: Could not determine type for: Pet, at table: Owner, for columns: [org.hibernate.mapping.Column(pet)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:306)
at org.hibernate.mapping.Column.getSqlTypeCode(Column.java:164)
Чего мне не хватает? Я не могу понять, как сделать это отображение PF-FK.
Нужно ли мне сообщать Hibernate, в какую таблицу наносится питомец, или она достаточно умна для этого? Может кто-нибудь предложить, как я могу изменить свое объявление о Pet ivar, чтобы Hibernate и я могли быть счастливы? :)
Спасибо!