当前位置: 首页 > 知识库问答 >
问题:

尚未设置所有命名参数:[:int]

康锦
2023-03-14

我使用PostgreSQL和hibernate

我有这个功能:

public List getMaxNumOrder (){

        String query= "select max(NULLIF(split_part(num_ordre_decision, '/', 3), '')::int) from decision";

        SQLQuery sqlQuery = this.getSession().createSQLQuery(query);

         return sqlQuery.list();

    }

运行我的项目后

我有这个错误:

org.hibernate.QueryException: Not all named parameters have been set: [:int] [select max(NULLIF(split_part(num_ordre_decision, '/', 3), '')::int) from decision]
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:339)
    at org.hibernate.impl.SQLQueryImpl.verifyParameters(SQLQueryImpl.java:228)

当我运行这个查询时:

从decision中选择max(null(split_part(num_ordre_decision),“/”,3),”::int)

数据库中我有正确的结果

例如,与数据库中的此类数据相关:

''
''
'4/35/677'
'4/35/1001'
'4/35/99'

我有 1001

但我的问题和冬眠有关

共有2个答案

霍书
2023-03-14

尝试将双 \ 放在前面

public List getMaxNumOrder (){
    String query= "select max(NULLIF(split_part(num_ordre_decision, '/', 3), '')\\:\\:int) from decision";

    SQLQuery sqlQuery = this.getSession().createSQLQuery(query);

    return sqlQuery.list();
}
骆文彬
2023-03-14

尝试在 sql 查询中使用如下所示的强制转换为 int

String query= "select max(cast(NULLIF(split_part(num_ordre_decision, '/', 3), '') AS int)) from decision";
 类似资料:
  • 我在JPA 2.0中发现了非常奇怪的行为 我正在尝试构建一个看起来像这样的查询,其中 employeId 和 empDepartment 是通过 java 参数传递的长值。 但是上面的查询第一次不工作,它产生了上面的错误,但是当我第二次再次触发相同的方法时,一切都很顺利,每次都是这样,这是什么原因呢?

  • 我得到这个例外: Java方法 public void getAllRevisions() {

  • 我正在jpa中设置本机查询,但它没有按预期运行并给我异常这是我的查询:

  • 问题内容: 我想执行一个简单的本机查询,但是它不起作用: 为什么会出现此异常? 问题答案: JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使用适用于Java Persistence查询语言,而不是为本机查询定义的。 仅位置参数绑定可用于本机查询。 所以用这个 尽管JPA规范在本机查询中不支持命名参数,但某些JPA实现

  • 问题内容: 我想执行一个简单的本机查询,但是不起作用: 为什么会出现此异常? 问题答案: JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使用适用于Java Persistence查询语言,而不是为本机查询定义的。 仅位置参数绑定可用于本机查询。 所以用这个 尽管JPA规范在本机查询中不支持命名参数,但某些JPA实现(