首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入到..在HQL中选择导致MismatchedTreeNodeException

插入到..在HQL中选择导致MismatchedTreeNodeException
EN

Stack Overflow用户
提问于 2011-01-07 23:12:37
回答 1查看 2.4K关注 0票数 1

我正在尝试做一件看起来非常简单的插入到..使用HQL选择,但我被MismatchedTreeNodeException难住了。据我所知,我是世界上第一个遇到这种情况的人,我认为这表明我正在做一件非常愚蠢的事情:)。

代码语言:javascript
复制
session.CreateQuery(
    @"insert into PriceValue (Currency, Price, Value)
    select :destinationCurrency, p, pv.Value * :x
    from PriceValue pv
    where pv.Currency = :defaultCurrency" )
    .SetDecimal( "x", x )
    .SetEntity( "destinationCurrency", currency )
    .SetEntity( "defaultCurrency", Config.DefaultCurrency )
    .ExecuteUpdate();

此练习的目标是将新创建的货币的价格值添加到所有现有价格中。

例外情况是:

QuerySyntaxException:引发了'Antlr.Runtime.MismatchedTreeNodeException‘类型的异常。在第1行、第63列附近插入到PriceValue (Currency,AcmeCorp.Core.Models.Products.Price,Value) select :destinationCurrency,pv.Price,pv.Value * :x from AcmeCorp.Core.Models.Products.PriceValue pv where pv.Currency = :defaultCurrency

一个提示可能是它扩展了属性规范的一部分(价格-> AcmeCorp.Core.Models.Products.Price) --异常消息似乎表明..Products.Price附近有问题。

(剪裁后的)映射(由Castle ActiveRecord生成)是:

代码语言:javascript
复制
<class name="AcmeCorp.Core.Models.Products.Price, AcmeCorp.Core.Models" table="`price`" schema="`products`">
    <id name="Id" access="property" column="`price_id`" type="Int32" unsaved-value="0">
        <generator class="native"></generator>
    </id>
    <set name="Values" access="nosetter.camelcase" table="`price_value`" lazy="false" inverse="true" cascade="all" fetch="join" batch-size="1000">
        <key column="`price_id`" />
        <one-to-many class="AcmeCorp.Core.Models.Products.PriceValue, AcmeCorp.Core.Models" />
    </set>
</class>

<class name="AcmeCorp.Core.Models.Products.PriceValue, AcmeCorp.Core.Models" table="`price_value`" schema="`products`">
    <id name="Id" access="property" column="`price_value_id`" type="Int32" unsaved-value="0">
        <generator class="native"></generator>
    </id>
    <property name="Value" access="property" type="System.Decimal">
        <column name="`value`"/>
    </property>
    <many-to-one name="Currency" access="property" class="AcmeCorp.Core.Models.Common.Currency, AcmeCorp.Core.Models" column="`currency_code`" unique-key="uk_price_currency" lazy="proxy" />
    <many-to-one name="Price" access="property" class="AcmeCorp.Core.Models.Products.Price, AcmeCorp.Core.Models" column="`price_id`" unique-key="uk_price_currency" lazy="proxy" />
</class>

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-01-14 00:34:12

我认为:x是导致MismatchedTreeNodeException的原因,我认为hql不会允许select中包含参数。尝试将其替换为常量,看看是否有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4626926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档