Java Spring JPA:预期加入的原因路径

Java Spring JPA:预期加入的原因路径,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我使用SpringJPA从两个表中获取数据,但当我使用query获取数据时,会发生错误 两个表:跳闸和跳闸状态 我的模型: 我的实体: @Entity @Table(name="trip") public class Trip { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="id") private int id; @Column(name="start_address") private String st

我使用SpringJPA从两个表中获取数据,但当我使用query获取数据时,会发生错误

两个表:跳闸和跳闸状态

我的模型: 我的实体:

@Entity
@Table(name="trip")
public class Trip {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;

@Column(name="start_address")
private String start_address;

@Column(name="end_address") 
private String end_address;

@Column(name="pickup_latitude")
private float pickup_latitude;

@Column(name="pickup_longitude")
private float pickup_longitude;

@Column(name="fee")
private float fee;

@Column(name="canceled_by")
private String canceled_by; 

@Column(name="canceled_at")
private Instant canceled_at;        

@Column(name="actual_distance")
private float actual_distance;

@Column(name="actual_price")
private float actual_price;     

/////////////////////////////////////////////
@Column(name="estimated_distance")
private float estimated_distance;

@Column(name="estimated_time")
private float estimated_time;

@Column(name="estimated_price")
private float estimated_price;

@Column(name="actual_time")
private float actual_time;

@ManyToOne(optional = false)
@NotNull
private TripStatus tripStatus;

// getter and setter    
我的存储库:

 @Repository
 public interface TripRepository extends JpaRepository<Trip, Integer> {

// TODO Auto-generated method stub  
@Query("SELECT trip FROM Trip trip INNER JOIN trip_status ON trip.trip_status_id = trip_status.id WHERE trip_status.id =: id")
public List<Trip> findById(@Param("id") int id);

  }

如何解决这个问题?

JPQL是一种JPA查询语言。它以面向对象的方式工作,因此您不能混淆trip_状态(列名)和tripStatus(实体属性名)

第一:您的加入应该是
内部加入trip.tripStatus ts

第二:在JPQL中,您不必指定
trip.trip\u status\u id=trip\u status.id

最后:
其中ts.id=:id

@Query("SELECT trip FROM Trip trip INNER JOIN trip.tripStatus ts WHERE ts.id =: id")
不能在一个查询中组合JPQL(trip)和本机SQL(trip\u状态)。需要在那里使用TripStatus吗
@Query("SELECT trip FROM Trip trip INNER JOIN trip.tripStatus ts WHERE ts.id =: id")