记录使用Hibernate查询bean中字段和数据库列类型不匹配问题

今天在工程中遇到Hibernate查询的时候,bean中的字段和数据库中的字段不符合(bean中有pageTime字段,但是数据库中没有此列)报错问题。

具体问题环境:

  在auto_off表中,off_time字段是bigint类型,用于存放unix时间戳,bean中对应属性类型为Long类型,但是前台传递过来的时间是String类型(2016-11-25)

解决办法1:

  在bean中添加一个String类型的pageTime字段,然后前台传递过来的数据使用pageTime接收,再将值转换成long类型,此时启动工程后查询时会报错。错误信息为:bean中字段找不到表中对应的列。于是想到一个类的一个属性没有在数据库中持久化,让hibernate查询数据库的时候不让它查询该属性。

  通过搜索的到结论:可以在字段上添加@Transient注解(javax.persistence.Transient)让Hibernate不去查询该字段。

  Transient注解详细解释:http://www.importnew.com/12611.html

 

@Column(name = "total")
private Integer total;

 

解决办法2:

  办法1的方法有些麻烦,最终需要的只是一个unix时间戳,那么在页面上通过日期控件用户选择的时间,转换成unix时间戳发送到后台即可。(其实开始没考虑是因为在后台会自动解析request中的参数,根据正则获取参数类型,注入bean中,构建成查询条件,不想去改这一部分)

//jquery datepicker 只能获取到年月日
var timeVal = $(this).val() + " 00:00:00";
var d = new Date(timeVal);
var result = Math.round(d.getTime()/1000);

 

posted @ 2016-11-25 18:16  0xcafedaddy  阅读(1010)  评论(0编辑  收藏  举报