@SqlResultSetMapping不适用于日期字段

时间:2019-02-18 10:11:45

标签: 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();

实体: someEntity

       @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”始终为空。

此代码有什么问题?我该如何获取日期价值?

真的很感谢任何帮助,因为我已经在这个问题上投入了很多时间,却一无所获。即使转换了日期格式,并在代码中声明了String字段,但仍无济于事。

1 个答案:

答案 0 :(得分:0)

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

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

2)将您的本机查询定义为NamedNativeQuery:

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

3):更新查询执行:

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