具有日期的雇员的 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 查询,并将在基础数据库上执行而不进行任何转换。但是,您将失去数据库独立性。
这是我的代码。当我使用 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 查询,并将在基础数据库上执行而不进行任何转换。但是,您将失去数据库独立性。