EclipseLink- JPQL 通过查询连接表



我的JPQl有问题,这是与TrainRoute和TrainRouteStation的一对多关系。我正在尝试创建一个内部联接并获取数据。本机SQL查询工作时,我使用mysql workbeanch并且我正在尝试将其转换为JPQL。另外,我试图从 2 天开始修复。

错误:对象比较只能与一对一映射一起使用。 其他映射比较必须通过查询键或直接属性级别比较来完成。

类别: 火车路线

@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id    
@Column(name = "train_route_id", unique = true, nullable = false)
public Long getTrainRouteId() {
return this.trainRouteId;
}
public void setTrainRouteId(Long trainRouteId) {
this.trainRouteId = trainRouteId;
}
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER, mappedBy = "trainRoute")
public List<TrainRouteStationData> getTrainRouteStations() {
return this.trainRouteStations;
}
public void setTrainRouteStations(List<TrainRouteStationData> trainRouteStations) {
this.trainRouteStations = trainRouteStations;
}

类别: 火车站

@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id    
@Column(name = "train_route_station_id", unique = true, nullable = false)
public Long getTrainRouteStationId() {
return this.trainRouteStationId;
}
public void setTrainRouteStationId(Long trainRouteStationId) {
this.trainRouteStationId = trainRouteStationId;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "train_route_id", nullable = false)
public TrainRouteData getTrainRoute() {
return this.trainRoute;
}

JPQL :"SELECT s FROM TrainRouteData t inner join TrainRouteStationData s ON t.trainRouteId=s.trainRoute where s.stationSeqN >=1 AND s.stationSeqN <=3 AND t.trainRouteDescX='Test1-Test2' order by s.stationSeqN asc"

本机 SQL :SELECT train_route_station.* FROM train_route inner join train_route_station ON train_route.train_route_id=train_route_station.train_route_id where train_route_station.station_seq_n >= 1 AND train_route_station.station_seq_n <= 3 AND train_route.train_route_desc_x='Test1-Test2' order by train_route_station.station_seq_n asc

它抛出一个错误: 异常描述:对象比较只能与一对一映射一起使用。 其他映射比较必须通过查询键或直接属性级别比较来完成。 Mapping: [org.eclipse.persistence.mappings.DirectToFieldMapping[trainRouteId-->train_route.train_route_id]] 表达式:[ 查询密钥列车路线编号

如何更改该查询?

这不是连接在 JPQL 中的工作方式。

正确的查询是

select s from TrainRouteData t inner join t.trainRouteStations s 
where s.stationSeqN >= 1 
and s.stationSeqN <= 3 
and t.trainRouteDescX = 'Test1-Test2' 
order by s.stationSeqN asc

最新更新