2014-03-04 37 views
1
<sql-query name="sql"> 
    select :COLUMN_NAME from table. 
</sql-query> 

我想用如何使用了setString來設置列名()休眠

this.sessionFactory.getCurrentSession().getNamedQuery("sql") 
       .setString("COLUMN_NAME", "id"); 

我得到一個錯誤的結果,當我使用此代碼(我知道我在哪裏失敗)設置COLUMN_NAME。有什麼方法可以使用getNamedQuery()setString()來設置COLUMN_NAME

+0

'「得到了錯誤的結果」'出錯了,請發佈錯誤。 – Vishrant

回答

0

您是否試過setParameter方法?

this.sessionFactory.getCurrentSession().getNamedQuery("sql") 
       .setParameter("COLUMN_NAME", "id"); 

而且info

+0

不,它不起作用。看起來COLUMN_NAME是String,就像從表格中選擇「COLUMN_NAME」,所以它返回COLUMN_NAME單詞。 – maskapsiz

+0

所以你想動態改變列的名字,爲什麼? –

+0

因爲表格有像col1 col2 col3 ... col100這樣的列。我只想使用3列,但這3列可以是col5 col10 col30或col7 col8 col9或任何其他選項,所以我想動態更改sql列名稱並調用sql,如「select col1,col5,col99 from table」 – maskapsiz

0

您必須添加<return-scalar column="name_first" type="string" />得到特定的列。像

<sql-query name="sql"> 
     <return-scalar column="COLUMN_NAME" type="java.lang.String" /> 
     select :COLUMN_NAME from table. 
    </sql-query> 

或者你可以使用setResultTransformer方法,如果你創造了一個bean類爲該表。

+0

它返回org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 錯誤:無效的列名稱,但列名是真的 – maskapsiz

+0

您將不得不在你的''映射你的表列。 hbm'文件或者通過'annotations' – Vishrant

+0

看完你的其他評論'我只想使用3列,但是這3 ...'我有一個問題,這些列的數據類型是否會相同,或者它會改變有時它會在某個時間是'Integer'或者某個東西。 – Vishrant