on子句Java Hibernate中的未知列

on子句Java Hibernate中的未知列,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我试图在hibernate中为多对多映射执行HQL,但遇到了一个奇怪的问题: 导致原因:java.sql.SQLSyntaxErrorException:未知列AllowedAge1\u0.allowedAgencies\u organization\u id'在“on子句”中 位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) 位于com.mysql.cj.jdbc.exceptions.S

我试图在hibernate中为多对多映射执行HQL,但遇到了一个奇怪的问题:

导致原因:java.sql.SQLSyntaxErrorException:未知列AllowedAge1\u0.allowedAgencies\u organization\u id'在“on子句”中

位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)

位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)

基本上,我有两张桌子,预订类型和代理。我需要在他们面前做很多对很多的事情。我相信我做的一切都是正确的,但是当我运行代码时,它给了我这个未知的专栏问题。不确定它为什么要执行allowedage1\u allowedAgencies\u organization\u id。它还在生成的HQL中包含变量名

以下是映射的类:

Agency.java

@Entity
@Table(name = "AGENCY")
public class Agency {
    
    @Id
    @Column(name="organization_id")
    private int id;
    
    @Column(name="name")
    private String name;
    
    @Column(name="acronym")
    private String acronym;
    
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "allowedAgencies")
    private Collection<ReservationReasonType> allowedReservations = new ArrayList<ReservationReasonType>();
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAcronym() {
        return acronym;
    }

    public void setAcronym(String acronym) {
        this.acronym = acronym;
    }

    public Collection<ReservationReasonType> getAllowedReservations() {
        return allowedReservations;
    }

    public void setAllowedReservations(Collection<ReservationReasonType> allowedReservations) {
        this.allowedReservations = allowedReservations;
    }

}
以下是生成的HQL,由于未知列而无法运行:

Hibernate: 
    select
        reservatio0_.reservation_reason_type_id as reservat1_2_,
        reservatio0_.reservation_reason_type_code as reservat2_2_,
        reservatio0_.description as descript3_2_ 
    from
        RESERVATION_REASON_TYPE reservatio0_ 
    inner join
        RES_AGENCY allowedage1_ 
            on reservatio0_.reservation_reason_type_id=allowedage1_.allowedReservations_reservation_reason_type_id 
    inner join
        AGENCY agency2_ 
            on allowedage1_.allowedAgencies_organization_id=agency2_.organization_id 
    where
        agency2_.acronym=?
我仔细检查了映射是否正确,我认为这没有任何问题。我不确定的一点是,我使用的是Hibernate3.0、HibernateJPA2.0和mysql 8.0.19。不确定这是否是个问题

我需要帮助

更新:

作为一个临时解决方案,我在RES_AGENCY表及其工作表中添加了以下两列,但这只是一张绷带。仍在努力找出合适的解决方案:

允许预订\预订\原因\类型\ id 允许代理机构\u组织\u id

请看一看,请看一看,
String query = "select rrt from ReservationReasonType as rrt join rrt.allowedAgencies age where age.acronym = :agencyAcronym)";
Hibernate: 
    select
        reservatio0_.reservation_reason_type_id as reservat1_2_,
        reservatio0_.reservation_reason_type_code as reservat2_2_,
        reservatio0_.description as descript3_2_ 
    from
        RESERVATION_REASON_TYPE reservatio0_ 
    inner join
        RES_AGENCY allowedage1_ 
            on reservatio0_.reservation_reason_type_id=allowedage1_.allowedReservations_reservation_reason_type_id 
    inner join
        AGENCY agency2_ 
            on allowedage1_.allowedAgencies_organization_id=agency2_.organization_id 
    where
        agency2_.acronym=?