on子句Java Hibernate中的未知列
我试图在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.javaon子句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
@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=?