必须为JOIN表达式定义标识变量

时间:2013-12-06 14:08:42

标签: mysql sql jpql

大家好我得到了错误

[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();
    }

是什么导致了这个?以及如何修复

谢谢!

2 个答案:

答案 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");