当前位置: 首页 > 面试题库 >

遇到mysql:=运算符时发生休眠异常

芮歌者
2023-03-14
问题内容

当我执行以下代码时,发生异常:

Exception: org.springframework.orm.hibernate3.HibernateQueryException: 
Not all named parameters have been set

这是我的代码:

queryString = SET @quot=0,@latest=0,@comp='';
    select B.* from (
    select A.time,A.change,IF(@comp<>A.company,1,0) as LATEST,@comp:=A.company as company from (
    select time,company,quote-@quot as `change`, @quot:=quote curr_quote
    from stocks order by company,time) A
    order by company,time desc) B where B.LATEST=1;

list = getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)throws     HibernateException,SQLException {
        SQLQuery  query = session.createSQLQuery(queryString);
        query.setParameterList("list", custIds);
        return query.list();
    }

这种行为的原因是什么?


问题答案:

这是一个有点费解,究竟是什么您正在执行的查询,但如果你需要使用冒号在本地查询,你的情况为“赋值”操作符,你应该逃避所有的结肠occurances
\\在您的带有查询的Java字符串,因此可能类似于:

select B.* from (
  select A.time,A.change,IF(@comp<>A.company,1,0) as LATEST,@comp\\:=A.company as company from (
      select time,company,quote-@quot as `change`, @quot\\:=quote curr_quote
      from stocks order by company,time) A
    order by company,time desc) B where B.LATEST=1;

更新:
似乎,尚无法在Hibernate本机查询中转义冒号,这是一个未解决的问题。这意味着,您不能在Hibernate本机查询中使用冒号,而不用于命名参数。您可以尝试创建一个函数并调用它,而不是调用查询。



 类似资料:
  • 问题内容: 我正在使用hibernate和hql在Java代码中进行查询。但是我有这样一个例外: 我不明白“ 0”的含义。以下是一些带有示例的细节: 我有几个表加入hql。表格如下: 类: hql: 查询: 结果是对象“ A”的列表,其中包含收集的长度和单位。我不明白为什么会遇到这个例外。请给一些建议。 更新: 我编写了一个ResultTransformer并输出所有“别名”以查看问题: 似乎它还

  • 问题内容: 我正在使用Hibernate。我写了一些本机查询,因为我需要使用sub select语句。 查询看起来像这样: 当我像这样运行此查询时: 出现此异常: 这可能是因为运算符。我发现了一些与此有关的Hibernate问题。这个问题仍然存在。这个问题没有解决办法吗? 问题答案: 您可以用一种稍微不同的方法来实现。.您需要将:运算符替换为其他内容(例如’|’char),然后在拦截器中替换’|’

  • 问题内容: 我有一个“复杂”的问题。 我正在使用Hibernate / JPA与数据库进行事务。 我不是DBA,客户端使用了我的应用程序,即RESTful Web服务。我的问题是数据库已更改(不是很频繁,但仍在更改)。另外,客户端并不总是尊重我的应用程序的输入(长度,类型等)。发生这种情况时,Hibernate会引发异常。异常很难翻译和从日志中读取,因为它具有嵌套的异常并且由很多文本组成:就像我说

  • 问题内容: 我在注释和上遇到了问题。在Hibernate中运行代码时,我得到: 引起原因:org.hibernate.PropertyAccessException:无法通过com.test.entities.EmployeeId.serverId的反射设置器设置字段值 但是,让我们从头开始…我有一个实体的复合主键,它由指向其他两个实体(和)的外键组成。为了设计简洁,我在Employee实体中使用

  • 问题内容: 任何人都知道一些有关如何为hibernate创建自定义ID生成器的好教程吗? 问题答案: 在Google上粗略搜索“hibernate自定义ID生成器教程”,发现了以下可能性。我排除了那些看起来没有用的内容,并总结了它们的内容。 http://www.devx.com/Java/Article/30396-涵盖了在数据保留之前生成ID(因此还没有业务密钥)的问题。 http://doc

  • 问题内容: 我正在尝试对对象Feature进行批量删除,该对象与另一个类FeatureMetadata具有双向ManyToOne关系。我正在抛出SQLGrammerException。 我正在使用的hql: 打开show SQL,将生成以下内容: 直接在数据库客户端中运行SQL会出现以下异常: 由于生成的SQL引发Exception,因此我尝试将方言从MySQL5InnoDBDialect更改为M