首页 > 解决方案 > 嵌套对象的 HQL 查询中的问题

问题描述

我有这两个类和一个插入数据的代码:

@Entity
@Table(name = "quiz_test")
public class QuizTest implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToOne
    @JoinColumn(name = "quiz_id")
    private Quiz quiz;


@Entity(name = "Quiz")
@Table(name = "quiz")
@PrimaryKeyJoinColumn(name="id")
public class Quiz implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    @ManyToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
    private List<StudentClass> stClasses= new ArrayList<>();

我想进行查询以搜索 StudentClass 的所有测验,如下所示:

public List<StatStudentClass> getStatistic(StudentClass sc){
    List<QuizTest> resultDb=(List<QuizTest>) hibernateTemplate.find("FROM QuizTest qt WHERE qt.quiz.stClasses= ?", sc);
}

但我有这个错误:

org.hibernate.QueryException:预期位置参数计数:1,实际参数:[StudentClass [id=2,name=Seconde A,startDate=2018-06-27,endDate=2018-11-05,students=[fr.dawan .autoquiz3000.beans.User@c1f72974, fr.dawan.autoquiz3000.beans.User@b15245c3, fr.dawan.autoquiz3000.beans.User@7f943dc1, fr.dawan.autoquiz3000.beans.User@9eaa7d67, fr.dawan.autoquiz3000 .beans.User@e7d21a2c,fr.dawan.autoquiz3000.beans.User@cfbe7565],版本=7]] [FROM QuizTest qt INNER JOIN qt.quiz q WHERE q.stClasses= ?]

有人可以向我解释我做错了什么!

谢谢你!

标签: hibernatejpa

解决方案


推荐阅读