在运行程序时报错
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2066)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1863)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839)
at org.hibernate.loader.Loader.doQuery(Loader.java:910)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
at org.hibernate.loader.Loader.doList(Loader.java:2554)
at org.hibernate.loader.Loader.doList(Loader.java:2540)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
at org.hibernate.loader.Loader.list(Loader.java:2365)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
等等一堆的Failure Trace 真是一时摸不着头脑,不知道是哪里的问题。
经百度发现,造成这种结果的原因:
1.数据库表中的字段与java bean 中的不匹配
2.数据库连接池配置方言与数据库不匹配
//oracle数据库方言
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
//mysql数据库方言
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
看了一下控制台报的错,确实是有个字段找不到,经过校对java bean 与数据库表字段,发现 domain 里面有一个属性,数据库没有,为什么会造成这样的问题呢,因为我用的表是某个表复制来的,可能同事改加了字段,但我的表还是原来的表,没去更新,导致出现了问题,字段与java bean 的属性一一对应上就解决啦。