如何解决如何通过spring data jpa左联接?
我想总结驾驶员的所有距离并按其ID分组。 我有Drivers表和Delivery表,并且Delivery表可能包含驱动程序及其距离。
所以我想让所有驱动程序与交付一起加入,以获取所有驱动程序,即使交付中没有驱动程序,并获取驱动程序ID和0距离的结果,以防交付表中不存在该驱动程序。
我尝试过:
@Repository
public interface DeliveryRepository extends CrudRepository<Delivery,Long> {
@Query("SELECT d,SUM(del.distance) as totaldistance FROM Driver d LEFT JOIN Delivery AS del ON d.id=del.driver.id GROUP BY del.driver.id ORDER BY SUM(del.distance) DESC")
List<Driverdistance> sumTotaldistance();
}
我收到此错误:
org.springframework.dao.InvalidDataAccessResourceUsageException: Could not extract ResultSet; sql [n/a]; nested exception is org.hibernate.exception.sqlGrammarException: Could not extract ResultSet
Driverdistance:
package com.walt.model;
public interface Driverdistance {
Driver getDriver();
Long getTotaldistance();
}
包com.walt.model;
导入javax.persistence。*;
@Entity
public class Driver extends NamedEntity {
@ManyToOne
City city;
public Driver(){}
public Driver(String name,City city){
super(name);
this.city = city;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
}
送货:
package com.walt.model;
import javax.persistence.*;
import java.util.Date;
import java.util.Random;
@Entity
public class Delivery {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@ManyToOne
Driver driver;
@ManyToOne
Restaurant restaurant;
@ManyToOne
Customer customer;
Date deliveryTime;
double distance;
public Delivery() {
}
public Delivery(Driver driver,Restaurant restaurant,Customer customer,Date deliveryTime) {
this.driver = driver;
this.restaurant = restaurant;
this.customer = customer;
this.deliveryTime = deliveryTime;
}
public Long getId() {
return id;
}
public Driver getDriver() {
return driver;
}
public void setDriver(Driver driver) {
this.driver = driver;
}
public Restaurant getRestaurant() {
return restaurant;
}
public void setRestaurant(Restaurant restaurant) {
this.restaurant = restaurant;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public double getdistance() {
return distance;
}
public void setdistance(double distance) {
this.distance = distance;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。