当前位置: 首页 > 面试题库 >

AnnotationException引用的属性不是(One | Many)ToOne

凌景辉
2023-03-14
问题内容

我试图建立一对一的关系。但是我得到了错误:

AnnotationException Referenced property not a (One|Many)ToOne
on
com.student.information.service.Department.departmentId in mappedBy of com.student.information.service.DepartmentHead.department

两个实体几乎相同。部门可以不设部门主管而存在。

Java部门

@Entity
@Table(name="department", catalog="student")
public class Department {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer departmentId;

    @Column(name="dept_name")
    private String departmentName;

    @OneToMany(mappedBy="department",cascade = CascadeType.ALL)
    private List<Student> student;

    @OneToOne(targetEntity=Department.class)
    private DepartmentHead departmenthead;
}

DepartmentHead.java

@Entity
@Table(name="departmenthead", catalog = "student")
public class DepartmentHead {

    //This is mapped with the department id

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @Column(name="headname")
    private String headName;

    @OneToOne(mappedBy = "departmentId",fetch = FetchType.LAZY,cascade=CascadeType.ALL)
    @JoinColumn(name="dept_id")
    private Department department;  
}

由以下原因引起:org.hibernate.AnnotationException:引用的属性不是(One | Many)ToOne:

有人能指出我在犯什么错误的正确方向吗?我从过去的2天开始苦苦挣扎,无法解决问题的解决方案。在此先感谢您的帮助。


问题答案:

您错误地设置了映射。Hibernate抱怨称没有departmentId可用的字段来建立一对一或多个关系,这是正确的。

您想要这样映射您的值。

Java部门

@Entity
@Table(name="department", catalog="student")
public class Department {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer departmentId;

    @OneToOne
    @JoinColumn(name = "id")
    private DepartmentHead departmenthead;
}

DepartmentHead.java

@Entity
@Table(name="departmenthead", catalog = "student")
public class DepartmentHead {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;

    @OneToOne(mappedBy = "departmenthead")
    private Department department;  
}

你点Department在外地DepartmentHeadDepartmentHead内场Department。Hibernate会选择要使用的ID,而无需在实际链接中指定该ID。



 类似资料:
  • 谁能告诉我我犯了什么错误吗。我从过去的两天一直在挣扎,无法找到解决问题的方法。事先谢谢你的帮助。

  • 可以使用不包含任何重复元素的Set java集合来实现One-to-Many映射。 我们已经看过如何在hibernate中映射Set集合,所以如果你已经学习了Set mapping,那么你就可以使用一对多的映射。 Set与映射表中的元素映射,并使用java.util.HashSet初始化。 当集合中不需要重复元素时,可以在类中使用Set集合。 定义RDBMS表 (Define RDBMS Tabl

  • many-to-one关联是最常见的关联类型,其中Object可以与多个对象相关联。 例如,相同的地址对象可以与多个员工对象相关联。 定义RDBMS表 (Define RDBMS Tables) 考虑一种情况,我们需要将员工记录存储在EMPLOYEE表中,该表具有以下结构 - create table EMPLOYEE ( id INT NOT NULL auto_increment,

  • 我目前正在阅读Hibernate关于实体关联的文档,我遇到了一些问题。它本质上与和关联之间的区别有关。尽管我在实际项目中使用过它们,但我无法完全理解它们之间的区别。根据我的理解,如果一个表/实体与另一个表或实体有关联,那么该关联应该来自另一方。那么,我们应该如何根据具体案例决定选择哪一个,以及它对数据库/查询/结果有何影响?到处都有好榜样吗? PS:我认为这将很有帮助,因为它与这个问题有关,如果有

  • 问题内容: 定义抽象实例属性而不是属性的最佳实践是什么? 我想写一些像: 代替: 属性很方便,但是对于不需要计算的简单属性来说,这太过分了。这对于将由用户进行子类化和实现的抽象类尤为重要(我不想强迫某人只可以在中编写代码来使用它)。 Python问题中的抽象属性仅建议使用和的答案:它不能回答我的问题。 通过抽象类属性的ActiveState配方可能是正确的方法,但是我不确定。它也仅适用于类属性,不

  • 如上所述,我不希望在移动设备上的div上有属性。 到目前为止,我已经做到了这一点,它可以与chrome一起使用,但可能不适用于其他浏览器: 这样做的正确方法是什么?有没有办法不用js就能逃脱? 谢谢