2013-03-02 43 views
1

時,我儘量選擇上表中的列的一個外鍵,我得到這個錯誤:未知列名於「where子句」

select count(*) from cards where username = 'name'; 

我做它通過Java JDBC所以我想的東西我的映射是錯誤的,因爲通過MySQL的命令行上相同的查詢工作得很好:

<many-to-one name="users" class="table" update="false" insert="false" fetch="select"> 
     <column name="username" length="45" not-null="true" /> 
</many-to-one> 

2013-03-02 12:19:03,660 INFO [http-bio-8080-exec-5] (NullableType.java:203) - could not read column value from result set: username; Column 'username' not found. 
2013-03-02 12:19:03,663 WARN [http-bio-8080-exec-5] (JDBCExceptionReporter.java:100) - SQL Error: 0, SQLState: S0022 
2013-03-02 12:19:03,664 ERROR [http-bio-8080-exec-5] (JDBCExceptionReporter.java:101) - Column 'username' not found. 

我發現那位此:

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#d0e13696

部分16.1.2和16.1.3可能的答案我的問題,但我不能弄明白......

+0

(1)檢查您是否從右表中選擇。 (2)檢查你是否連接到正確的數據庫。 – NPE 2013-03-02 10:41:43

+0

是我爲1和2 – user1692261 2013-03-02 10:48:12

回答

2

該錯誤消息指出:

無法從結果集中讀取列值:username;未找到列'用戶名'。

select count(*) from ...的結果集沒有名爲username的列。它只包含一列,即計數。

+0

所以我如何計算用戶名'name'有多少行? – user1692261 2013-03-02 10:55:46

+0

@ user1692261:我不確定我關注。你向查詢提供''name'',並返回該名稱的計數*。 – NPE 2013-03-02 10:56:32

+0

這是一個多對一的表格。對於每個usarname屬性,此表中可能有多行。例如,我想要統計用戶名NPE在表中有多少行。 – user1692261 2013-03-02 11:03:08

0

嘗試執行

select count(*) from cards where `cards`.username='name'; 
+0

也不起作用 – user1692261 2013-03-02 11:05:26

0

爲獲得字段不應該使用 「SELECT *」。
應使用「選擇計數(用戶名)從卡,其中用戶名='名稱';」表達。