복붙노트

[SPRING] AnnotationException 참조되지 않은 속성 (One | Many) ToOne

SPRING

AnnotationException 참조되지 않은 속성 (One | Many) ToOne

나는 일대일 관계를 만들려고 노력했다. 하지만 오류가 발생합니다.

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

두 엔티티는 거의 동일합니다. 부서는 부서장과 함께 존재할 수 있습니다.

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 : Referenced 속성이 아님 (One | Many) ToOne :

누가 실수를 저지르고 있는지에 대해 올바른 방향으로 나를 가리켜 주시겠습니까? 지난 2 일 동안 고생하고 있으며 문제 해결을위한 해결책을 찾지 못했습니다. 도움에 미리 감사드립니다.

해결법

  1. ==============================

    1.매핑을 잘못 설정했습니다. Hibernate는 departmentId라는 필드가 one-to-one 또는 many 관계를 설정하는 데 사용할 수 없다고 불평하고있다.

    매핑을 잘못 설정했습니다. Hibernate는 departmentId라는 필드가 one-to-one 또는 many 관계를 설정하는 데 사용할 수 없다고 불평하고있다.

    이렇게 값을 매핑하려고합니다.

    Department.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;  
    }
    

    DepartmentHead의 Department 필드에서 DepartmentHead 필드를 가리 킵니다. Hibernate는 어떤 ID를 사용할지를 결정하고, 실제 링크에서 그것을 지정할 필요가 없다.

  2. ==============================

    2.Student 클래스는 어떻습니까? Student 클래스에서 ManyToOne 관계를 정의 했습니까?

    Student 클래스는 어떻습니까? Student 클래스에서 ManyToOne 관계를 정의 했습니까?

        @Entity
        public class Student {
          @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
          private int id;
          private String name;
    
          @ManyToOne
         private Department department;
         ..................
    

    이 예제를 확인하십시오.

  3. from https://stackoverflow.com/questions/28710346/annotationexception-referenced-property-not-a-onemanytoone by cc-by-sa and MIT license