gpt4 book ai didi

java - 仅使用月份的 java.util.Date 类型的 Spring Boot + Spring Data JPA 查询

转载 作者:行者123 更新时间:2023-11-29 02:16:27 28 4
gpt4 key购买 nike

我正在使用 Spring Boot 1.4.0Spring Data JPA 1.10.2,我发现自己在创建这样的查询时陷入僵局:

SELECT * FROM myDatabase
WHERE
MONTH(nascimento) = '11';

我的目标是列出当前月份的所有生日,使用 sql 格式 year-month-day 的字段。

在我的 @Entity 中,我存储了一个名为 nascimentojava.util.Date 类型属性。

@Entity
public class Cliente {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

@NotEmpty
private String nome;

@NotNull
private Date nascimento;

// Get/Set...
}

在我的 @Repository 中,我使用了 Spring Data CrudRepository 接口(interface)。

@Repository
public interface ClienteRepository extends CrudRepository<Cliente, Integer> {
// Methods...
}

有什么方法可以只使用 java Date 类型的 month on 属性来执行查询吗?

我想使用 Query methods 在关系 DBMS 之间创建一个可互操作的查询由 Spring Data 框架支持。

目前我用这种方法解决了这个问题(但我认为它并不适合所有数据库):

@Query(value = "SELECT * FROM Cliente WHERE MONTH(nascimento) like ?1", nativeQuery = true)
Iterable<Cliente> findAllByNascimentoLike(String Month);

想出解决方案,必要时使用月份和日期?
感谢您试图帮助我。

最佳答案

使用JPA Query Expressions这种语言独立于数据库。 JPA 查询表达式类似于您的 native 查询 (you may use function MONTH):

@Query("SELECT u FROM Cliente u WHERE MONTH(u.nascimento) = ?1")
Iterable<Cliente> findAllByNascimentoLike(Integer month);

关于java - 仅使用月份的 java.util.Date 类型的 Spring Boot + Spring Data JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38903135/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com