我最近启动了我的第一个 Java 项目,该项目使用 Hibernate(和 JPA 注释)来实现持久性。
我有以下类(class):
用户类别
*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 映射到哪个表,或者它是否足够聪明来做到这一点?有人可以建议我如何更改 Pet ivar 的声明,以便 Hibernate 和我可以快乐吗? :)
谢谢!
最佳答案
我猜这是由于您在字段和属性上混合了注释造成的。您需要以一致的方式放置注释,除非您使用 @Access
/@AccessType
明确指示如何放置注释。
关于java - 使用 JPA 注释进行 Hibernate 映射 : Could not determine type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284213/