com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in ./map/Guest.xml.
--- The error occurred while applying a result map.
--- Check the Guest.listGuest.
--- Check the result mapping for the 'password' property.
--- Cause: java.sql.SQLException: Column 'userpwd' not found.
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:94)
at com.zhxingchen.guestbook.dao.impl.BaseDAOImpl.queryAll(BaseDAOImpl.java:36)
at com.zhxingchen.guestbook.dao.impl.GuestDAOImpl.queryGuestByProperty(GuestDAOImpl.java:68)
at com.zhxingchen.guestbook.dao.impl.TestGuestDAO.testQueryByProperty(TestGuestDAO.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: Column 'userpwd' not found.
at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:983)
at com.mysql.jdbc.ResultSet.getString(ResultSet.java:4826)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.ResultSetLogProxy.invoke(ResultSetLogProxy.java:47)
at $Proxy7.getString(Unknown Source)
at com.ibatis.sqlmap.engine.type.StringTypeHandler.getResult(StringTypeHandler.java:35)
at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getPrimitiveResultMappingValue(ResultMap.java:619)
at com.ibatis.sqlmap.engine.mapping.result.ResultMap.getResults(ResultMap.java:345)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.java:384)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:300)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:189)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)
... 28 more
出現這個錯誤的當頭我就懵了,我怎么也想不明白數據庫里面怎么會沒有userpwd這個字段,我反復的對照都感覺數據庫里是有的啊,最后終于讓我找出了問題所在,等知道后我就暈了,一個很簡單的映射錯誤,我居然反復了看了3個小時,可能是熬夜了思維停滯了吧!

2010年5月14日
今天早上在上班的路上突然想起來《錦瑟》,于是隨便念了一下,走著走著,突然想讀讀這首詩,不為其他,只為興起。
錦瑟 李商隱
錦瑟無端五十弦,一弦一柱思華年。
莊生曉夢迷蝴蝶,望帝春心托杜鵑。
滄海月明珠有淚,藍田日暖玉生煙。
此情可待成追憶,只是當時已惘然。
讀詩,少不了要說作者的,李商隱(約812年或813年1—約858年),字義山,號玉谿生、樊南生。晚唐詩人。原籍河內懷州(今河南沁陽),祖輩遷滎陽(今河南鄭州)。(此段摘自維基百科)
這首詩描寫了很多種物,也引用了兩個典故,只有最后一聯寫的是情義。
首先,我們來看看這首詩里面的物,分別有錦瑟,蝴蝶,杜鵑,滄海,月亮,珍珠,淚水,藍田,太陽,玉,煙等等。除去中間引用的典故,其他基本都是靜物。首先寫錦瑟,這件物事開篇第一句就托出來了,點明全篇,我想當時作者可能是看到了這樣一個錦瑟才引發了感慨,而且感慨頗深,每一弦一個雁柱都讓作者想到了以前的歡樂的時光,可見這件物事對他來說銘心刻骨。然后是蝴蝶和杜鵑,當然這兩個事物是作者引用的典故,其中有莊子的物我相容的典故和望帝的化杜鵑以寄意,可見作者對物的看法,也就進一步點名作者此刻的心情可能是和錦瑟想容了,或者是作者將這個物看作了另一個人,即借物懷人,這個我們日常也曾會有,譬如說有時候你看到一個鐲子,可能和你送給你的朋友的信物很像,多年不見早已忘懷,如今再見,難道在你眼中只看到了那個鐲子么?然后是滄海這一聯,這一聯中一連寫了好多物事,有八個之多吧,其中有像珍珠、玉這樣富貴的物事,也有像淚水,煙那樣易逝讓人悲傷的物事,更有像滄海、月亮、太陽、藍田等亙古不變的物事,可見作者既描寫了漫長,也描寫了短暫,既描寫了歡樂,也描寫了悲傷,然而,快樂并非是永久的,因為點題的兩個物事是淚和煙,可見歡樂的時光很短暫而悲傷和思念卻相當漫長,可見作者思念之深。
其次,這首詩里有一句是抒情的,此情可待成追憶,只是當時已惘然。那份情義本來是可以去期盼的但現在只能追憶,只是當時已經迷茫了。此句點題也呼應了第一聯看到錦瑟后懷人。
在這里我突然想起了一些故人,也許當年的吵鬧其實真的沒什么,卻又葬送了一段美好的情義,難道我們不也是迷茫了么?因而,要好好把握現在的這份感情,畢竟在數十億記的人群里,我們相遇,相知,到相愛是多么的不易,何苦非要鬧到以后看到了一些舊物卻只能以淚洗面,借物懷人呢!
Ps: 在這首詩里的藍田,我在幾年前曾去過,一個本來以玉石聞名的地方現在只有青山依在,綠水長流。可見,就算有的時候是掌握了資源,掌握了財富,若干年后大家也沒什么不同。所以對于那些和我一樣在大都市里尋找角色的朋友,請你們不要悲傷,也不要郁悶,生命很短暫,如何在有限的時間里讓生命更充實,讓生活更輕松,讓自己更快樂才是我們所應該考慮的事情。因為,我們要相信,時間才是仲裁者,一切的不平等,不平均在時間的面前都是泡沫,最后等會消散于無形。另外,藍田值得你去看一下!
posted @
2010-05-14 19:57 Zhjiang 閱讀(203) |
評論 (0) |
編輯 收藏
Apache Qpid:
Wiki上的描述是:
Apache Qpid is an open source (Apache 2.0 licensed) messaging system which implements the Advanced Message Queuing Protocol. It provides transaction management, queuing, distribution, security, management, clustering, federation and heterogeneous multi-platform support.
OK,不廢話,進入正題,我今天搞了一天才將其配置好,稍微會有一點麻煩,不過還算好用,對于用到Message Queue或者想用的朋友,可以嘗試一下!
首先進入
http://qpid.apache.org/getting-started.html,然后進入download 頁面,由于我是用JAVA來開發,所以我選擇下載Mutiple Component Packages條目下的JAVA broker,client & tools這一個,用C++開發或者其他語言開發的也可以適當選擇下載。另外還有一個適用的工具可以下載是在Management tools條目下面(是一個基于Eclipse RUP 的軟件,由于今天調了半天沒調好所以就不說明了)
然后回到getting-start那一頁看安裝說明: 在這里我稍微說下吧,反正也很簡單(解壓什么的就略過了)!
1. 設置環境變量,這里有兩個環境變量需要設置 QPID_HOME 和QPID_WORK,上面的E問很簡單,QPID_WORK是用來設置broker產生文件的路徑,主要是LOG吧。
2.修改%QPID_HOME%\etc\config.xml文件,主要是修改management下面的<keyStorePath></keyStorePath>的文件路徑,否則直接啟動會出現一個莫名其妙的找不到文件的錯誤
4.執行create-example-ssl-strores,然后執行qpid-server命令即可,你可以發現broker很正常的啟動了
對于JMS的Prodcer(PTP)/Publisher(PUB/SUB)執行步驟一般是
1.通過ConnectionFactroy得到Connection(請注意Qpid示例中properties文件的connectionfactory.xxxxx鍵后面對應的值一般都是amqp://xxxx:xxxx@xxxx/xxx?brokerlist='tcp://localhost:5672'格式的)
2. 通過Connection獲得一個Session(PTP)/TopicSession(PUB/SUB)
3. 獲得MessageProducer(PTP)/Topic(PUB/SUB)
4. 產生/發布消息
5. 關閉Connection(當關閉Connection的時候,Session 也會自動關閉)
消費者/訂閱之的執行步驟幾乎差不多,就是第四步是消費/訂閱消息
好了,今天就寫到這吧,很簡單的介紹,以后再慢慢寫,有什么問題,大家可以共同探討下!
最后,注意文明用語,謝謝!~~~~
posted @
2010-05-14 18:48 Zhjiang 閱讀(1215) |
評論 (0) |
編輯 收藏