hibernate的addScalar导致的@JsonFormat注解失效

之前使用hibernate的query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(Model.class))

的方式来返回自定义的对象,但是有个问题,那就是返回的类型千奇百怪,bigInteger,bigDecimal之类的各不相同,当使用不同的查询返回相同的对象时就出问题了,我得吐槽一点,hibernate就不能根据返回的对象动态地赋值吗?为图省事,我只好使用addScalar("pic", StandardBasicTypes.STRING)的方式来制定返回值,其实一点儿也不省事,因为一旦加上addScalar,需要将所有返回字段都加上这个,我又得吐槽了,就不能加一个方式,加了addScalar的字段使用制定的类型,不加addScalar的字段就使用默认的类型吗?网上找了半天都没有可以选择的方式。

结果我发现页面显示时间类型的参数出问题了,@JsonFormat不起作用,加上以后都返回时间戳(例如:1527523200000),不加反而返回2018-6-21的固定格式。之前没有联想到addScalar上,找了半天原因,在我看来,都是Date类型,怎么有的就起作用,有的就不起呢?后来发现就是addScalar的原因,我给返回的时间类型都用了addScalar("date", StandardBasicTypes.DATE),结果@Jsonformat就失效了,当我换成.addScalar("date", StandardBasicTypes.TIMESTAMP)后就可以了。看来时间和时间戳类型是不一样的。怪不得之前用mybatis时都是指定时间戳的。之前的认识浅了。

猜你喜欢

转载自blog.csdn.net/qq_36804701/article/details/80757148
今日推荐