HQL SQL GrammarException:无法从ManyToMany字段查询中提取ResultSet

问题描述

我被以下例外困扰:

javax.persistence.PersistenceException:org.hibernate.exception.sqlGrammarException:无法提取ResultSet。

我有以下课程Organisation。看看我的@ManyToMany属性sousTraitantsdonneurDOrdre

@Entity
@Table( name = "t_organisation",indexes = {
} )
public class Organisation implements Serializable {

    @Id
    @Column( name = "N_ID" )
    @GeneratedValue( strategy = GenerationType.IDENTITY )
    protected Long id;

    @Basic
    @Column( name = "C_RAISONSOCIALE",nullable = false )
    private String raisonSociale;

    @OnetoMany( fetch = FetchType.LAZY,cascade = CascadeType.PERSIST,mappedBy = "organisation"  )
    private Set<Individu> personnels;
    
    @ManyToMany(cascade = { CascadeType.ALL })
    @JoinTable(
        name = "SousTraitant_Organisation",joinColumns = { @JoinColumn(name = "N_DONNEURDORDRE_ORGID") },inverseJoinColumns = { @JoinColumn(name = "N_SOUSTRAITANT_ORGID") }
        )
    private Set<Organisation> sousTraitants = new HashSet<>();
    
    @ManyToMany(mappedBy = "sousTraitants")
    private Set<Organisation> donneurDOrdre = new HashSet<>();

我尝试了以下查询来检索Organisation的列表:

List<Organisation> result = HibernateUtil.getCurrentSession()
.createquery( "SELECT o FROM " + Organisation.class.getName() + " o JOIN o.sousTraitants WHERE o.donneurDOrdre = :idDonneurDOrdre",Organisation.class )
.setParameter( "idDonneurDOrdre",idDonneurDOrdre )
.getResultList();

但是我仍然有相同的异常消息,并且不是我的@ManyToMany批注是错误的还是查询

解决方法

我找到答案的声音:

return HibernateUtil.getCurrentSession()
                .createQuery( "SELECT o FROM " + Organisation.class.getName() + " o JOIN o.sousTraitants s WHERE s.id = :idDonneurDOrdre",Organisation.class ).setParameter( "idDonneurDOrdre",idDonneurDOrdre ).getResultList();