【发布时间】:2019-01-26 05:23:19
【问题描述】:
我的 JPQl 有问题。这是与 TrainRoute 和 TrainRouteStation 的一对多关系。我正在尝试创建内部联接并获取数据。当我使用 mysql workbeanch 并尝试将其转换为 JPQL 时,本机 SQL 查询工作。另外,我试图从 2 天开始修复。
错误:对象比较只能与 OneToOneMappings 一起使用。其他映射比较必须通过查询键或直接属性级别比较来完成。
类:火车路线
@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
它会抛出一个错误: 异常描述:对象比较只能与 OneToOneMappings 一起使用。其他映射比较必须通过查询键或直接属性级别比较来完成。 映射:[org.eclipse.persistence.mappings.DirectToFieldMapping[trainRouteId-->train_route.train_route_id]] 表达: [ 查询key trainRouteId
如何更改该查询?
【问题讨论】:
标签: sql eclipselink jpql