我有三张表:student
,student_info
,student_hobbies
。 student_info
有两列,即stu_id
和stu_hob
。 stu_id
已映射到学生ID,stu_hob
已映射到student_hobbies
hob_id
。
我们为student和student_hobbies提供了相应的java类。 student_info没有java类。
我在spring数据中写了一个连接来检索学生的爱好细节。
@Query("select s from student s, student_info sinfo, student_hobbies lp where s.id = sinfo.stu_id and sinfo.stu_hob = hob_id).
我收到以下错误:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: student_info is not mapped
那是因为没有名为student_inf的java类。是否必须为student_info创建java类,或者是否有其他方式来获得旅行者的爱好。
@Entity
public class Student extends Profile {
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
}
@Entity
public class StudentHobbies {
@GeneratedValue(strategy = GenerationType.AUTO)
private long hob_id;
private String bookname;
private String bookdesc
}
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Profile extends AbstractStudent {
@JoinTable(name = "student_info", joinColumns = @JoinColumn(name = "stu_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "stu_hob", referencedColumnName = "hob_id"))
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<StudentHobbies> studentHobbies;
}
答案 0 :(得分:0)
那是因为没有名为student_inf的java类。是否必须为student_info创建java类,或者是否有其他方法可以让旅行者爱好。
只有拥有映射数据库中现有表的Java类时,Hql / Jpql才有效。在您的情况下,您可以使用StudentInfo
类映射表student_info
如果没有它们,则无法编写HQL查询。
如果由于某种原因无法创建此类,唯一的方法是放弃HQL并使用本机SQL。