Java 使用JPQL通过联接表进行查询时出错
我试图使用route实体的源属性和目的属性获取列车实体列表,route实体之间存在一对多关系。将路线id作为外键的列车表。表名分别为路线和列车。当查询抛出Java 使用JPQL通过联接表进行查询时出错,java,spring,hibernate,join,jpql,Java,Spring,Hibernate,Join,Jpql,我试图使用route实体的源属性和目的属性获取列车实体列表,route实体之间存在一对多关系。将路线id作为外键的列车表。表名分别为路线和列车。当查询抛出java.lang.IllegalArgumentException:public abstract java.util.List com.infyrail.app.repository.RouteRepository.findBySourceDestination(java.lang.String,java.lang.String)方法的查询
java.lang.IllegalArgumentException:public abstract java.util.List com.infyrail.app.repository.RouteRepository.findBySourceDestination(java.lang.String,java.lang.String)方法的查询验证失败时,请帮助我代码>
路由存储:
public interface RouteRepository extends JpaRepository<RouteEntity, Integer> {
@Query("SELECT t FROM train t JOIN route r WHERE r.source=?1 AND r.destination=?2")
public List<TrainEntity> findBySourceDestination(String source,String destination);
}
问题就在这里。查询应该定义表bean名称,而不是实际的表名称
在您的情况下,您应该使用TrainEntity而不是train,使用RouteEntity而不是route
public interface RouteRepository extends JpaRepository<RouteEntity, Integer> {
@Query("SELECT t FROM TrainEntity t JOIN RouteEntity r WHERE r.source=?1 AND r.destination=?2")
public List<TrainEntity> findBySourceDestination(String source,String destination);
}
public interface RouteRepository扩展了JpaRepository{
@查询(“从列车实体t连接路线属性r中选择t,其中r.source=?1和r.destination=?2”)
公共列表findBySourceDestination(字符串源、字符串目标);
}
问题出在这里。查询应该定义表bean名称,而不是实际的表名称
在您的情况下,您应该使用TrainEntity而不是train,使用RouteEntity而不是route
public interface RouteRepository extends JpaRepository<RouteEntity, Integer> {
@Query("SELECT t FROM TrainEntity t JOIN RouteEntity r WHERE r.source=?1 AND r.destination=?2")
public List<TrainEntity> findBySourceDestination(String source,String destination);
}
public interface RouteRepository扩展了JpaRepository{
@查询(“从列车实体t连接路线属性r中选择t,其中r.source=?1和r.destination=?2”)
公共列表findBySourceDestination(字符串源、字符串目标);
}
只需使用findbyroutesourceandroedestation
不编写查询即可。只需使用findbyroutesourceandroedestation
不编写查询即可。
public interface RouteRepository extends JpaRepository<RouteEntity, Integer> {
@Query("SELECT t FROM TrainEntity t JOIN RouteEntity r WHERE r.source=?1 AND r.destination=?2")
public List<TrainEntity> findBySourceDestination(String source,String destination);
}