如题
解决方案 »
- jsp新手,不要笑话
- 2009看你 牛不牛?java最新异常,google找了半天也没找到同样的,看谁能解决
- Jsp中的图片从Tomcat移植到WebLogic中显示问题
- class="GRIDTABLE"
- 关于servlet向jsp跳转时url带有的中文问题
- 高分求救,struts中如何用jspsmartupload上传文件
- 弱弱问:装Tomcat,怎么选JDK
- 请教高手!Jsp配置问题!
- Inprise Application Server 跟 Borland AppServer是一个东东吗?
- RedisTemplate设置过期时间问题
- 菜鸟级别的问题,望高手们解救
- 怎样在工作中提高自己?前辈们请指教!
我参考书这样写的。提示以下错误:
org.hibernate.QueryException: No column name found for property [CURRENT_TEMPERATURE_C] [select tablename.CURRENT_TEMPERATURE_C as {table.CURRENT_TEMPERATURE_C},tablename.WIND_DIRECTION_ENGLISH as {table.WIND_DIRECTION_ENGLISH},tablename.FORECAST_CHINESE as {table.FORECAST_CHINESE},tablename.FORECAST_ENGLISH as {table.FORECAST_ENGLISH},tablename.WEATHER_CHINESE as {table.WEATHER_CHINESE},tablename.WEATHER_ENGLISH as {table.WEATHER_ENGLISH} from SWeather tablename where CITY_IATA=PEK]
at org.hibernate.loader.custom.SQLQueryParser.resolveProperties(SQLQueryParser.java:195)
at org.hibernate.loader.custom.SQLQueryParser.substituteBrackets(SQLQueryParser.java:131)
at org.hibernate.loader.custom.SQLQueryParser.process(SQLQueryParser.java:76)
at org.hibernate.loader.custom.SQLCustomQuery.<init>(SQLCustomQuery.java:160)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:144)
at com.infoair.giis.hibernate.business.ResultCollection.ResultCollection(ResultCollection.java:26)
at org.apache.jsp.Inquire.QueryWeatherResult1_jsp._jspService(QueryWeatherResult1_jsp.java:157)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
个人以为像这种复杂的动态sql语句,hibernate不太适合
Session session = this.getHibernateTemplate().getSessionFactory()
.openSession();
Connection conn = session.connection();
RowSetDynaClass result = null;
try {
PreparedStatement ps = conn.prepareStatement(queryString);
for (int i = 0; i < params.length; i++) {
Object param = params[i];
ps.setObject(i + 1, param);
}
ResultSet rs = ps.executeQuery();
result = new RowSetDynaClass(rs);
rs.close();
ps.close();
session.close(); } catch (SQLException e) {
logger.error("Method:findBySQL(String queryString, Object[] params)", e);
} return result;
}RowSetDynaClass是org.apache.commons.beanutils下的一个类,自己从网上下就是了
Connection conn = session.connection();
这就获得一个Connection剩下全是jdbc了,没问题吧?
还想问您一个问题:hibernate如何取动态的列名。就是select后的列名是动态传递过来的。hibernate如何在不知道具体列名的情况下取出其值。
不就得了!
能否给个例子?
有问题最好先查文档,不行再提问题 :)
得需要映射对象的。session.createSQLQuery(sql,"表别名",表映射对象名.class)。