【问题标题】:How to set column name using setString() hibernate如何使用 setString() hibernate 设置列名
【发布时间】:2014-03-04 14:55:44
【问题描述】:
<sql-query name="sql">
   select :COLUMN_NAME from table.
</sql-query>

我想使用

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

当我使用这段代码时,我得到了一个错误的结果(我知道我失败的地方)。有没有办法使用getNamedQuery()setString() 设置COLUMN_NAME

【问题讨论】:

  • "got a wrong result" 出错的地方请发布错误。

标签: java sql hibernate


【解决方案1】:

你试过setParameter方法吗?

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

进一步info

【讨论】:

  • 不,它不起作用。似乎 COLUMN_NAME 作为字符串,如从表中选择“COLUMN_NAME”,因此它返回 COLUMN_NAME 字。
  • 所以要动态更改列名,为什么呢?
  • 因为表中有 col1 col2 col3 ... col100 之类的列。我只想使用 3 列,但这 3 列可以是 col5 col10 col30 或 col7 col8 col9 或任何其他选项,所以我想动态更改 sql 列名并调用 sql,如“从表中选择 col1、col5、col99”
【解决方案2】:

您必须添加&lt;return-scalar column="name_first" type="string" /&gt; 才能获取特定列。喜欢

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

如果您为该表创建了bean 类,则可以使用setResultTransformer 方法。

【讨论】:

  • 它返回 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Invalid column name but column name is true
  • 您必须在.hbm 文件中或通过annotations 映射表列
  • 在阅读了您的其他评论I only want to use 3 columns but these 3... 之后,我有一个问题,这些列的数据类型是否会相同,或者它会改变,就像有时它会是Integer 有时是Date 或什么的.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多