Hibernate 碰到一个很诡异的问题,高分求解!!

涅槃 2011-05-19 04:54:47
我数据库是String类型,Hibernate映射文件也是String类型,然后我查找那张表的数据的时候报错

查找代码

public Price searchNewPrices(String upc){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
Price prices = new Price();
prices = (Price) session.createQuery("from com.sungale.wpt.data.Price where upc=:upc and ts = (select max(ts) from com.sungale.wpt.data.Price where upc=:upc)").setString("upc", upc).uniqueResult();
transaction.commit();
return prices;
}


测试代码

public static void main(String[] args){
ItemDao iDao = new ItemDao();
Price price = new Price();
price = iDao.searchNewPrices("123456110110");
System.out.print(price.getUpc());
}


报错信息:
Exception in thread "main" org.hibernate.exception.DataException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:100)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:835)
at com.sungale.wpt.dao.ItemDao.searchNewPrices(ItemDao.java:88)
at com.sungale.wpt.dao.ItemDao.main(ItemDao.java:98)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '1.2345611011E11' in column '4' is outside valid range for the datatype INTEGER.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:999)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.throwRangeException(ResultSetImpl.java:7872)
at com.mysql.jdbc.ResultSetImpl.parseIntAsDouble(ResultSetImpl.java:7114)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2666)
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2777)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:126)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2114)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332)
at org.hibernate.loader.Loader.getRow(Loader.java:1230)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 10 more

报错提示是int数据范围超出,但是我数据库和Hibernate的映射文件和pojo类都是String类型的,怎么会有一个int类型呢,狗日的,哪位兄弟知道什么原因,麻烦说说,大恩不言谢,给分.Thanks
...全文
108 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
langxiashahai 2011-05-20
  • 打赏
  • 举报
回复
看看你数据库中price表,那个字段你设置的是什么类型。
zjt321 2011-05-19
  • 打赏
  • 举报
回复
ts 是什么类型的,不是整型,好像就不能直接=

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧