2011-01-07 12 views
1

HQLで選択するとかなり簡単に挿入されるようにしようとしていますが、MismatchedTreeNodeExceptionで困惑しています。私が言うことができる限り、私はこれに遭遇した世界で最初の人です。私は、私が何か非常にばかげたことをしていることを示しています。に挿入する.. HQLで挿入するとMismatchedTreeNodeExceptionが発生する

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)に挿入します。 選択:destinationCurrency、pv.Price、pv.Value *:x 、AcmeCorp.Core.Models.Products。例外メッセージが示しているようだ - defaultCurrency]

1つのヒントがプロパティ仕様( - > AcmeCorp.Core.Models.Products.Price価格)の一部を拡大することであってもよい:pv.Currency =はPriceValue PV 製品の問題。 (城のActiveRecordによって生成された)

(トリミングダウン)のマッピングは、以下のとおりです。

<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> 

任意のアイデア?

答えて

0

私は:xがMismatchedTreeNodeExceptionを引き起こしていると思う、私はhqlが選択範囲内のparamを許可するとは思わない。それを定数で置き換え、役立つかどうか確認してください。

+0

代わりにSQLクエリを使用しましたが、来週にこれを試します。 – Bergius

+0

悲しいことに、これは役に立たなかった。また、さらなる実験により、EarlyExitExceptionのインスタンスがスローされました。あきらめる。 – Bergius

+1

私のシナリオで作業しましたが、hqlは黒い芸術になります – Vman

関連する問題