[SPRING] AnnotationException 참조되지 않은 속성 (One | Many) ToOne
SPRINGAnnotationException 참조되지 않은 속성 (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.매핑을 잘못 설정했습니다. 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.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; ..................
이 예제를 확인하십시오.
from https://stackoverflow.com/questions/28710346/annotationexception-referenced-property-not-a-onemanytoone by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MBeanExporter - MBean에 이름 지정하기 (0) | 2019.03.23 |
---|---|
[SPRING] Spring Batch : Spring MVC 컨트롤러 내에서 새로운 스레드로 작업 시작하기 (0) | 2019.03.23 |
[SPRING] 공장에서 생성 한 인스턴스를 autowire하는 스프링 방식은 무엇입니까? (0) | 2019.03.23 |
[SPRING] Spring 데이터 JPA : get 결과 튜플에서 별칭을 찾지 못했습니다! 사용자 지정 쿼리를 실행할 때의 오류 (0) | 2019.03.23 |
[SPRING] 병렬 스프링 배치 작업의 수를 제어하는 방법 (0) | 2019.03.23 |