java - 使用 JPA 注释进行 Hibernate 映射 : Could not determine type

标签 java hibernate jpa mapping persistence

我最近启动了我的第一个 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/

相关文章:

java - Java Socket 编程场景

java - JEP 145 发生了什么(由于编译代码重用,jvm 启动更快)?

java - Swing:如何创建事件并将它们分派(dispatch)给组件?

java - 持久化 OneToMany 关系仅保留集合中的第一个对象?

java - 将 Java/JSP 应用程序限制为一定数量的 hibernate 查询

java - Hibernate EntityManager 未被注入(inject) - NullPointer

java - @PostConstruct 第一次执行失败

java - 是否可以在 JSF 1.1/Facelets 中重载 EL 方法

java - 从 hibernate 中获取查询的执行时间

java - Jpa、Hibernate选择查询优化