【问题标题】:Hibernate query for employee with date带有日期的员工的休眠查询
【发布时间】:2016-02-17 06:18:22
【问题描述】:

这是我的代码。当我使用 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

数据库中具有相同日期的数据..所以它不应该通过 if 条件。它应该遵循 else 条件。但只要我尝试这个它就会打印“成功登录”

提前感谢

【问题讨论】:

  • 你为什么有Date(me.date) = ?2?你试过me.date = ?2吗? EmployeeAttendanceMaster.date 列的数据类型是什么?
  • 数据库中的日期是 2016-02-17 11:58:11 .. 我只想要日期 ..这就是我在实体表中使用它的原因:@JsonSerialize(using = CustomLocalDateTimeSerializer.class) @JsonDeserialize (使用 = CustomLocalDateTimeDeserializer.class)私有 LocalDateTime 日期;
  • @Query的完整数据类型是什么?你在使用 Spring Data JPA 吗?
  • 我没听明白..什么是完整数据类型..??我们使用的是spring和hibernate..
  • 类的完整数据类型是它的完全限定类型名称。例如String类的完整数据类型为java.lang.String@Documented注解的完整数据类型为java.lang.annotation.Documented等等。

标签: mysql hibernate spring-data-jpa


【解决方案1】:

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

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

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

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

【讨论】:

  • 在上面的答案中查看修改后的查询。
  • 这个查询像我以前的查询一样工作。虽然数据库中存在相同日期的员工,但它通过“if”条件并存储多条记录。但我想要如果员工在数据库中有相同的日期它应该遵循其他条件。即查询无法正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 2012-09-06
  • 2017-05-18
相关资源
最近更新 更多