Java 获取错误org.hibernate.QueryException:非法尝试取消引用集合

Java 获取错误org.hibernate.QueryException:非法尝试取消引用集合,java,spring,hibernate,jpa,hibernate-mapping,Java,Spring,Hibernate,Jpa,Hibernate Mapping,我有一个复习班,有很多员工 java中的关联是 @ManyToMany(targetEntity = Employee.class, cascade = { CascadeType.ALL }) @JoinTable(name = "review_employee", joinColumns = { @JoinColumn(name = "reviewid") }, inverseJoinColumns = { @JoinCol

我有一个复习班,有很多员工

java中的关联是

    @ManyToMany(targetEntity = Employee.class, cascade = { CascadeType.ALL })
    @JoinTable(name = "review_employee", 
            joinColumns = { @JoinColumn(name = "reviewid") }, 
            inverseJoinColumns = { @JoinColumn(name = "empid") })
    private Set<Employee> employees;
谢谢你的帮助


更新 Employee.java


Review.java

公共课复习{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@ManyToMany(targetEntity=Employee.class,cascade={CascadeType.ALL})
@JoinTable(name=“review\u employee”,
joinColumns={@JoinColumn(name=“reviewid”)},
inverseJoinColumns={@JoinColumn(name=“empid”)}
私人雇员;
@列(name=“customerfirstname”,null=false)
私有字符串customerFirstName;
@列(name=“customerlastname”,null=false)
私有字符串customerLastName;
@奥内托内
@JoinColumn(name=“starratingid”,nullable=false)
私人主演;
@列(name=“reviewtitle”,null=false)
私有字符串评论标题;
@列(name=“review”,nullable=false)
@类型(Type=“text”)
私人字符串审查;
…接球手和接球手。。。
}
您的以下查询

 FROM com.abc.model.Review r LEFT JOIN fetch r.employees WHERE r.id = 1 AND ( r.employees.id = 11 )
应该这样修改

FROM com.abc.model.Review r LEFT JOIN fetch r.employees emp WHERE r.id = 1 AND ( emp.id = 11 )
下面是您的查询

 FROM com.abc.model.Review r LEFT JOIN fetch r.employees WHERE r.id = 1 AND ( r.employees.id = 11 )
应该这样修改

FROM com.abc.model.Review r LEFT JOIN fetch r.employees emp WHERE r.id = 1 AND ( emp.id = 11 )

你能试着从加入的员工而不是评论的员工中引用该员工吗。试试这个:

FROM com.abc.model.Review r LEFT JOIN fetch r.employees reviewEmp WHERE r.id = 1 AND reviewEmp.id = 11

你能试着从加入的员工而不是评论的员工中引用该员工吗。试试这个:

FROM com.abc.model.Review r LEFT JOIN fetch r.employees reviewEmp WHERE r.id = 1 AND reviewEmp.id = 11


你还可以发布员工实体的结构吗?@KarthikR添加了员工实体的结构谢谢。员工很好。你能添加评论类的实体吗?我怀疑它的id是复习课。是复合键吗?你的查询在哪里?@KarthikR添加了评论,javaCan你也可以发布员工实体的结构吗?@KarthikR添加了员工实体的结构谢谢。员工很好。你能添加评论类的实体吗?我怀疑它的id是复习课。这是一个复合键吗?你的查询在哪里?@KarthikR添加了评论,javaThis不起作用。已尝试,但仍然存在错误。您使用的是哪个Hibernate版本?如果我尝试此操作,则会出现以下错误:org.Hibernate.QueryException:无法解析属性:employees of:com.abc.model.Employee[FROM com.abc.model.Review r LEFT JOIN fetch r.employees emp WHERE r.reviewStatus.id=1和(emp.employees.id=11)]实际上他有一个打字错误。(emp.employees.id=11)应替换为(emp.id=11)。这也是我的答案。请尝试。您是加入
SET
还是加入
emp
类对象?这不起作用。已尝试,但仍然存在错误。您使用的是哪个Hibernate版本?如果我尝试此操作,则会出现以下错误:org.Hibernate.QueryException:无法解析属性:employees of:com.abc.model.Employee[FROM com.abc.model.Review r LEFT JOIN fetch r.employees emp WHERE r.reviewStatus.id=1和(emp.employees.id=11)]实际上他有一个打字错误。(emp.employees.id=11)应替换为(emp.id=11)。这也是我的答案。请尝试。您是使用
SET
还是
emp
类对象进行连接?:)请记住,“非法尝试取消引用集合”主要与访问集合有关,其中集合直接引用,而不是通过连接的“类”引用进行调用。:)请记住这一点“非法尝试取消引用集合”主要与访问集合有关,其中集合直接引用,而不是通过联接的“类”引用调用。