【发布时间】:2016-06-30 09:59:25
【问题描述】:
我正在使用带有休眠 ORM 的 Spring Boot MVC 应用程序。
我有一张学生表,里面有其他表的外键。
Student.java:
@Entity
@Table(name = "STUDENT")
public class student{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long STUDENT_ID;
@OneToOne
@JoinColumn(name="COURSE_ID")
private Long COURSE_ID;
@OneToOne
@JoinColumn(name="ACDYEAR_ID")
private Long ACDYEAR_ID;
@OneToOne
@JoinColumn(name = "SEMESTER_ID")
private Long SEMESTER_ID;
}
StudentRepository:
@Query(value="SELECT * FROM STUDENT INNER JOIN ACADEMICSYEAR ON STUDENT.ACDYEAR_ID = ACADEMICSYEAR.ACDYEAR_ID INNER JOIN ACADEMICSCOURSE ON STUDENT.COURSE_ID = ACADEMICSCOURSE.COURSE_ID where STUDENT_ID=?1",
nativeQuery=true)
public STUDENT findOneID(Long id);
sql server 中的相同查询返回填充的学年表和课程表,但这里给出了类似的错误
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.boot.model.STUDENT.COURSE_ID references an unknown entity: java.lang.Long
【问题讨论】:
-
JPA 认为
Long是链接实体的名称。您必须使用链接实体的类名。例如,如果COURSE_ID链接到COURSE表,您将拥有private COURSE course_id。但是,您的注释将意味着存在一对一的关系,这是没有意义的。
标签: java sql-server spring hibernate