mysql - @SqlResultSetMapping 不适用于日期字段

标签 mysql hibernate date spring-boot jpa

我有以下非常简单的代码。

@SqlResultSetMapping(name="getTestTable", classes = {
    @ConstructorResult(targetClass = someEntity.class, 
    columns = {
            @ColumnResult(name="some_date", type=Date.class)
    
    })
})

查询:

   getEntityManager().createNativeQuery("SELECT distinct some_date from test " );

    List<someList > list=query. getResultList();
    

实体: 一些实体

       @Column(name = "some_date")
       @JsonFormat(pattern="dd/MM/yyyy")
       private Date someDate;


     public someEntity(java.util.Date someDate) {
    super();
    this.someDate= someDate;
}

“someDate”列中有数据,查询在 Sql-Editor 上运行正常,但运行上面的代码时“some_date”始终为 null。

这段代码有什么问题?我应该如何获取日期值?

我什至在代码中转换了日期格式并声明了字段 String,但没有任何效果。

最佳答案

1) 当您使用 java.util.Date 时,您应该使用时间类型标记日期字段:

   @Column(name = "some_date")
   @Temporal(TemporalType.DATE)
   @JsonFormat(pattern="dd/MM/yyyy")
   private Date someDate;

2) 将 native 查询定义为 NamedNativeQuery:

@NamedNativeQuery(name = "testTableNativeQuery",
  query = "SELECT distinct some_date from test",
  resultSetMapping = "getTestTable")

3)更新您的查询执行:

getEntityManager().createNamedQuery("testTableNativeQuery", someEntity.class).getResultList();

关于mysql - @SqlResultSetMapping 不适用于日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744825/

相关文章:

java - spring boot jpa无法创建表

r - 在 R 中查找特定月份的第一天

mysql - SQL UNIQUE 键不将国际字符视为不同的

php - 单击图像后从数据库中获取值

mysql - 获取 SQL 查询以在 3 个表中为空计数结果打印 0

arrays - 在 Swift 5.1 中,在不知道键的情况下,根据 Date 类型的字典值对字典数组进行排序?

javascript - Angularjs:使用日期助手格式化 UTC 时间的时间戳

php - 更新 mysql 数据库中的一行?

java - 何时在 Hibernate 中使用 @OneToOne 注释?

hibernate - 如何在不使用inList闭包的情况下使用GORM获取表B中不存在的表A行?