具有日期的雇员的 Hibernate 查询

Hibernate query for employee with date

这是我的代码。当我使用 mysql 查询(在屏幕截图中找到它)进行搜索时,查询工作正常。但是休眠查询失败了。

EmployeeAttendanceMaster masterEmployeeFromRepository = masterEmployeeRepository.findById(employee, date);
    if (masterEmployeeFromRepository == null) {

        System.out.println("SignIn Successfully");
    }else System.out.println("You are already Logged In");

masterEmployeeRepository:

@Query("select me from EmployeeAttendanceMaster me where me.employee = ?1 and Date(me.date) = ?2 order by me.date desc")
EmployeeAttendanceMaster findById(Employee employee,Date date);

mysql db screenshot in with same query

db 中有相同日期的数据..所以如果 condition.It 应该遵循其他 condition.But 它不应该通过只要我试过它打印 "SignIn Successfully"

提前致谢

您正在使用 Spring Data JPA @Query 注释(从您在问题的评论中提供的完整数据类型可以看出)。您使用 @Query (select me from EmployeeAttendanceMaster me ...) 指定的查询必须是有效的 JPA 查询语言 (JPQL) 语句。据我所知和记忆,JPQL 没有 Date() 函数。因此,您的查询无效,因为它包含 Date(me.date),它引用了一个不存在的 JPQL Date() 函数,即使您可以直接在 MySQL.[=17 上 运行 它=]

您可以将查询声明更改为:

@Query(value = "select * from EmployeeAttendanceMaster where employee_id = ?1 and Date(date) = ?2 order by date desc", nativeQuery = true)

这将强制 JPA 提供程序(在您的情况下为 Hibernate)将查询视为本机 SQL 查询,并将在基础数据库上执行而不进行任何转换。但是,您将失去数据库独立性。