【发布时间】:2019-06-22 09:07:34
【问题描述】:
请帮助了解我如何为这个 MySQL 查询编写 JPA 查询
select car_xid from t_booking where from_date between '06/23/2019' and
'06/24/2019'
or to_date between '06/23/2019' and '06/24/2019' or from_date <
'06/23/2019' or to_date > '06/24/2019'
在 MySQL 中,此查询返回 car_xid 为 1;
我有 Booking bean,它映射到 MySQL DB 中的 t_booking 表 以及映射到 MySQL DB 中 t_cars 的 Cars 表
汽车豆:
@Entity
@Table(name="m_cars")
public class Cars {
public Cars() {
}
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="car_pid")
private int carPid;
@Column(name="car_number")
private String carNumer;
@Column(name="car_name")
private String carName;
@Column(name="car_type")
private String carType;
@Column(name="passenger_number")
private int paxNumbers;
@Column(name="available_from")
private Date availableFrom;
@Column(name="available_to")
private Date availableTo;
@Column(name="rates")
private float ratesPeHour;
@Column(name="deposite")
private float deposite;
@Column(name="is_active")
private char isActive;
@Column(name="from_city")
private String fromCity;
@Column(name="to_city")
private String toCity;
@Column(name="img_url")
private String imgUrl;
}
预订豆:
@Entity
@Table(name="t_booking")
public class Booking {
public Booking() {
}
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="booking_pid")
private int bookingPid;
@OneToOne
@JoinColumn(name="user_xid")
private User user;
@Column(name="from_city")
private String fromCity;
@Column(name="to_City")
private String toCity;
@Column(name="from_date")
private Date fromDate;
@Column(name="to_date")
private Date toDate;
@Column(name="car_number")
private String carNumber;
@Column(name="deposite")
private float deposite;
@Column(name="passenger_number")
private int paxNumber;
@Column(name="from_loc")
private String fromLoc;
@Column(name="to_loc")
private String toLoc;
@OneToOne
@JoinColumn(name="car_xid")
private Cars cars;
@Column(name="transaction_id")
private String transactionId;
@Column(name="total_amount")
private float totalAmount;
}
我尝试过关注 JPA 查询
public interface BookingRepo extends JpaRepository<Booking, Integer>{
@Query("select b.cars.carPid from Booking b,Cars car where b.fromDate
between ?1 and ?2 or b.toDate between ?3 and ?4 or b.fromDate < ?5 and
b.toDate > ?6")
List<Integer> getBookedCarId(Date fromDate,Date toDate,Date from,Date
to,Date frmDate,Date tDate);
}
这个返回 null 但实际上应该返回 1。
实际结果 = JPA 查询返回 null。
expected result= 应该返回 car_xid 为 1
【问题讨论】: