【发布时间】:2018-07-01 03:18:06
【问题描述】:
这是我的实体的样子:
@Entity
public class Registration {
@Id
@GeneratedValue
private Integer id;
@org.springframework.format.annotation.DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
}
这就是我的仓库的样子:
@Query(value = "SELECT * FROM registration WHERE MONTH(date) = ?1 AND YEAR(date) = ?2")
List<Registration> findAll(Integer month, Integer year);
这将是服务:
public List<Registration> getCurrentRegistration() {
LocalDate today = LocalDate.now();
return registrationRepository.findAll(today.getMonth().getValue(), today.getYear());
}
public List<Registration> getRegistrations(Integer month, Integer year) {
return registrationRepository.findAll(month, year);
}
如何将我的本机查询更改为 JPA 查询? JPA 查询能否在 postgresql 和 hsqldb 上工作? 为什么 JPA 查询最适合 Spring 应用程序? (或者为什么他们不是)
【问题讨论】:
-
您的 JPA 提供程序是否支持函数
MONTH和YEAR?因为它们不是标准的 JPA 函数。当您查看 JPA 的文档时,您尝试过什么? -
我还没有尝试太多。我注意到我的解决方案(本机查询适用于 hsqldb,不适用于 postgresql)。我是 JPA 的新手,这就是我问你的原因。通常我只是使用 CRUD 或 JPA 存储库创建查询,例如 FindByName(String name);等等。这就是为什么我的知识是非常基础的。
标签: java spring postgresql spring-data-jpa jpql