100分求教:奇怪的异常
码工码工 2008-09-21 02:28:36 我用SSH,写个小应用,现在碰到这样的问题:
Servlet.service() for servlet action threw exception
java.sql.SQLException: '6.07231828574168E14' in column '5' is outside valid range for the datatype INTEGER.
at com.mysql.jdbc.ResultSet.throwRangeException(ResultSet.java:1485)
at com.mysql.jdbc.ResultSet.getIntFromString(ResultSet.java:4841)
at com.mysql.jdbc.ResultSet.getNativeInt(ResultSet.java:6166)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:1294)
at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:1498)
at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:237)
at org.hibernate.type.IntegerType.get(IntegerType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:95)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:1899)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1372)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1300)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:569)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at com.chineseall.bookreader.dao.BookChapterDAO.getChapterContent(BookChapterDAO.java:47)
at com.chineseall.bookreader.action.BookManageAction.getBookChapterContent(BookManageAction.java:98) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
.............
看错误提示,意思是我把一个超出了INTEGER范围的值赋给了INTEGER类型的变量,可是我程序里没有这样的转换的地方,所以特别纳閟,现在代码卡到这里写不下去了,所以求高人指点一下,跪求了。。。
我的VO:
public class BookChapter implements java.io.Serializable {
private String bookId; //这里是String
public String getBookId() {
return this.bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
该VO的hbm.xml:
<property name="bookId" type="java.lang.String">
<column name="book_id" not-null="true" unique="true" />//这里也是String
</property>
相关的DAO:
public class BookChapterDAO extends HibernateDaoSupport {
public Object getChapterContent(String bookId, String sort) {//传过来的也是String
Session session = getHibernateTemplate().getSessionFactory().openSession();
List list = session.createQuery("from BookChapter as b where b.bookId=? and b.sort=?")
.setString(0, bookId).setString(1,sort)
.list();//这里也都是String,错误就是提示这
//一行代码,明显是在执行list()方法的时候出错
return list.get(0);
}
}
库中的:
mysql> desc book_chapter;
+----------------------+------------------+------+-----+---------+--------------
--+
| Field | Type | Null | Key | Default | Extra
|
+----------------------+------------------+------+-----+---------+--------------
--+
| id | int(10) unsigned | NO | PRI | NULL | auto_incremen
t |
| book_chapter | varchar(255) | NO | | |
|
| book_chapter_content | longtext | YES | | NULL |
|
| book_column | varchar(255) | NO | | |
|
| book_id | varchar(255) | YES | MUL | NULL |
|
| sort | varchar(100) | NO | | 1 |
|
+----------------------+------------------+------+-----+---------+--------------
--+
6 rows in set (0.00 sec)
我觉得也就是这几个地方操作了这个VO对象,可这里都是String类型的呢,到底是那里引起的问题呢,要疯了,这个问题我搞了昨天一天,今天到现在,不知道问题出现在那里。。。。