Java Hibernate联接无法强制转换多对多异常

Java Hibernate联接无法强制转换多对多异常,java,sql,hibernate,hql,Java,Sql,Hibernate,Hql,我有一个关于hibernate的问题。 我必须选择具有多对多关系的课程,并尝试进行选择。问题是我遇到了一个例外。你能帮忙吗 @Entity(name = "pracownik") @Inheritance(strategy = InheritanceType.JOINED) @Proxy(lazy = false) public class Pracownik extends Osoba { @ManyToMany(fetch = FetchType.EAGER, cascade = { Ca

我有一个关于hibernate的问题。 我必须选择具有多对多关系的课程,并尝试进行选择。问题是我遇到了一个例外。你能帮忙吗

@Entity(name = "pracownik")
@Inheritance(strategy = InheritanceType.JOINED)
@Proxy(lazy = false)
public class Pracownik extends Osoba {

@ManyToMany(fetch = FetchType.EAGER, cascade = { CascadeType.ALL })
@JoinTable(name = "grafikpracownika", joinColumns = { @JoinColumn(name = "idosoby") }, 
inverseJoinColumns = { @JoinColumn(name = "idgrafiku") })
private List<Grafik> grafiki = new ArrayList<>();
}
你知道怎么了吗?
我还想添加一个“where”,但在我排除了这个异常之后应该很容易。 我还尝试使用“普通”sql

但我得到的是:

org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [idosoby] during auto-discovery of a native-sql query

您正在从两个没有显式
select
子句的表中进行选择,因此Hibernate会生成一个元组列表
(Pracownik,Grafik)

如果您只需要
Pracownik
s(即需要join在
where
中的
p.grafiki
上创建条件),请使用

如果join用于指示Hibernate获取关联的
Grafik
s,请使用
join fetch

from pracownik as p join fetch p.grafiki
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to model.Pracownik
SELECT * from pracownik p join grafikpracownika g on p.idosoby = g.idosoby where idgrafiku = 6
org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException: Encountered a duplicated sql alias [idosoby] during auto-discovery of a native-sql query
select distinct p from pracownik as p join p.grafiki
from pracownik as p join fetch p.grafiki