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>
任意のアイデア?
代わりにSQLクエリを使用しましたが、来週にこれを試します。 – Bergius
悲しいことに、これは役に立たなかった。また、さらなる実験により、EarlyExitExceptionのインスタンスがスローされました。あきらめる。 – Bergius
私のシナリオで作業しましたが、hqlは黒い芸術になります – Vman