【发布时间】:2016-12-18 14:13:16
【问题描述】:
我正在使用 Spring Boot 1.4.0 和 Spring Data JPA 1.10.2,但我发现自己陷入了创建这样的查询的僵局:
SELECT * FROM myDatabase
WHERE
MONTH(nascimento) = '11';
我的目标是列出当月的所有生日,字段为 sql 格式 year-month-day。
在我的@Entity 中,我存储了一个java.util.Date 类型属性,名为nascimento。
@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 接口。
@Repository
public interface ClienteRepository extends CrudRepository<Cliente, Integer> {
// Methods...
}
有没有办法只使用 java Date 类型的属性月份来执行查询?
我想使用 Spring Data 框架支持的 Query methods 在关系 DBMS 之间创建可互操作的查询。
目前我用这种方法解决了这个问题(但我认为它并不适合所有数据库):
@Query(value = "SELECT * FROM Cliente WHERE MONTH(nascimento) like ?1", nativeQuery = true)
Iterable<Cliente> findAllByNascimentoLike(String Month);
想出解决方案,并在必要时使用月份和日期?
感谢您尝试帮助我。
【问题讨论】:
标签: java mysql sql spring spring-data-jpa