我有以下非常简单的代码。
@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字段,但仍无济于事。
答案 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();