大家好我得到了错误
[57, 57] An identification variable must be defined for a JOIN expression
尝试运行此查询时
public String searchString = "test";
public List<Appointment> appointmentRangeSearch(Date startdatetime, Date endDate) {
Query q = em.createQuery("SELECT u FROM Appointment U INNER JOIN Users_appointment "
+ "ON u.userid = users_appointment.userid"
+ " WHERE u.startDatetime BETWEEN :date1 AND :date2 "
+ "AND u.ATTENDEES_USER_NAME LIKE :search");
//Query q = em.createQuery("SELECT u FROM Appointment U WHERE u.startDatetime BETWEEN :date1 AND :date2");
q.setParameter("search", "%" + searchString + "%");
q.setParameter("date1", startdatetime, TemporalType.TIMESTAMP);
q.setParameter("date2", endDate, TemporalType.TIMESTAMP);
return q.getResultList();
}
是什么导致了这个?以及如何修复
谢谢!
答案 0 :(得分:1)
也许,因为你有不同的表名:
INNER JOIN Users_appointment
和
users_appointment.userid
答案 1 :(得分:1)
看不出任何错误...尝试制作U小写并使用
SELECT u。* FROM Appointment u ....
em.createQuery("SELECT u.* FROM Appointment u INNER JOIN Users_appointment "
+ "ON u.userid = users_appointment.userid"
+ " WHERE u.startDatetime BETWEEN :date1 AND :date2 "
+ "AND u.ATTENDEES_USER_NAME LIKE :search");