2016-12-06 9 views
0

Orientdbで埋め込みフィールドのプロパティを更新する際に問題が発生しています。以下はorientdbの埋め込みカラムのプロパティを更新するには

は、問題を再現する手順は、次のとおりです

CREATE VERTEX Foo set value = { 'abc-def-hgi':"blah blah", '1ab-2cd-3ef': "aaaaa", '345-jkl-mno':'ppppp' }, id = 1 
CREATE VERTEX Foo set value = { 'abc-def-hgi':"mmmmm", '1ab-2cd-3ef': "nmnmnmn", '345-jkl-mno':'qqqq' }, id = 2 
CREATE VERTEX Foo set value = { 'abc-def-hgi':"lorem ipsum", '1ab-2cd-3ef': "mmmmm", '345-jkl-mno':'llll' }, id = 3 

プロパティ「の値は」「組み込み」タイプのように宣言されています。

今、 "value"列の "abc-def-hgi"プロパティのidを "1"にしてレコードを更新したいとします。

私は以下のクエリを試してみましたが、それらのどちらも働いた:

update Foo set value["abc-def-hgi"] = "new new" where id = 1 
update Foo set value.abc-def-hgi = "new new" where id = 1 

ハイフン(「 - 」)での問題持っているようだフィールドのプロパティ名では。 2.2.11

注:

私はOrientdbのバージョンを使用しています私はthisを見つけorientdb Gitのレポ、中に問題を見下ろしていましたしています。それが私の問題と関連しているかどうかはわかりませんが、私の目的のためにはうまくいきません。

ご協力いただければ幸いです。

答えて

0

あなた自身が言ったように、問題は - です。

フィールドを入力しないと、次のクエリが機能します。

update Foo set value.prop = "myprop1" where id=1 

あなたがフィールドを作成しようとした場合 - 、あなたは例外が発生しました。

UPDATE

あなたは

create property foo.`abc-def-hgi` string 

が、それはの使用に関する

+0

ハイフンなしで動作することはわかっています。しかし、プロパティ名にハイフン( " - ")を使用する必要があります。それはすべて可能ではありません、それはあなたが言うことを意味していますか? –

+0

はい、 - でフィールドを作成しようとしたときに例外が発生したため、可能性はないと思います。 –

+0

"create property foo.abc-def-hgi' string"に関して、ここではハイフン付きのプロパティを使用していません。この例のプロパティは "value"で、タイプは "Embedded"です。その中の動的な特性。 –

0

を役に立てば幸い、このコマンドを使用することができハイフンでプロパティを作成するには、「 - 」プロパティの名前にしますAlessandroがデータベースオプションの "厳密な"値を表示するか無効にするかのように引用符を使用することができます(この場合は少し堅牢であった古いパーサーにロールバックしています)

関連する問題