2016-08-21 7 views
0

私は、Java APIを介してorientDB 2.2.7を使用していて、次の頂点を作成している中で頂点に追加することができます5人の所有者、私は些細な方法でコードでそれを行うことができました、私の質問は、タイプの共同所有者の端の数を制限することができますorientDBの任意のメカニズムは、頂点の車に追加することができますか?リミットは、エッジの数はorientDB

+0

こんにちは、私はOrientDBでこのような機能はないと思うが、あなたは、あなたのJavaアプリケーション –

+0

それともから呼び出しますサーバー側のJS関数を書くことができますおそらくこれは便利なhttp://orientdb.com/docs/master/Hook.html –

答えて

2

Dynamic Hooksを使用してこの小さなテストケースを作ったが、私はあなたと似ていると思います。

create class Car extends V 
create class Driver extends V 
create class CoOwner extends E,OTriggered 

ALTER CLASS CoOwner CUSTOM onBeforeCreate=createOwner 

create property Car.ID string 
create property Car.Model string 
create property Car.Color string 

create property Driver.Name string 
create property Driver.Surname string 
create property Driver.CF string 

create index Car.ID UNIQUE_HASH_INDEX 
create index Driver.CF UNIQUE_HASH_INDEX 

create vertex Car set ID="AA666ZZ", Model="Fiat Panda", Color="Black" 
create vertex Car set ID="BB222ZZ", Model="Ferrari 458 Italia", Color="Red" 
create vertex Car set ID="CC954ZZ", Model="AlfaRomeo Giulietta", Color="Blue" 

create vertex Driver set Name="Pino", Surname="Pasticcino", CF="PNOPSC1234567890" 
create vertex Driver set Name="Giannaldo", Surname="Pippi", CF="GNLPIP1234567890" 
create vertex Driver set Name="Pierromeo", Surname="Pasticcino", CF="PRMPSC1234567890" 
create vertex Driver set Name="Adalbrigo", Surname="Brighi", CF="ALRBGH1234567890" 
create vertex Driver set Name="Renfrancesco", Surname="Raldi", CF="RFCRLD1234567890" 
create vertex Driver set Name="Caldanzio", Surname="Freddi", CF="CDZFRD1234567890" 
create vertex Driver set Name="Roberdrigo", Surname="Brighi", CF="RBRBGH1234567890" 
create vertex Driver set Name="Gorzorg", Surname="Il Distruggitore", CF="GRZIDG1234567890" 

その後、次のコードを使用して、JS関数を作成する必要があります。そして、あなたは6つのエッジを追加しようとすることによってそれをテストすることができ

var MAX_EDGES = 5; 
var CUR_EDGES = doc.field('out').field('out_CoOwner').size(); 

print('\n--------------------------------------------------------------------'); 
print('\n\nMax Edges: ' + MAX_EDGES); 
print('\nCoOwner edges: ' + CUR_EDGES); 

if (CUR_EDGES > MAX_EDGES){ 
    throw new java.lang.RuntimeException("Maximum number of edges reached."); 
} 
else { 
    print('OK!'); 
} 

create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "PNOPSC1234567890") 
create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "RFCRLD1234567890") 
create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "GNLPIP1234567890") 
create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "CDZFRD1234567890") 
create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "PRMPSC1234567890") 
create edge CoOwner from (select from Car where ID = "AA666ZZ") to (select from Driver where CF = "RBRBGH1234567890") 

コンソールログ:

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 1 
OK! 

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 2 
OK! 

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 3 
OK! 

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 4 
OK! 

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 5 
OK! 

-------------------------------------------------------------------- 


Max Edges: 5 

CoOwner edges: 6 

2016-08-22 17:46:45:292 SEVER Internal server error: 
com.orientechnologies.orient.core.command.script.OCommandScriptException: Error on parsing script at position #2: Error on execution of the script 
Script: createOwner 
-------^ 
    DB name="stack39062533" 
--> javax.script.ScriptException: java.lang.RuntimeException: Maximum number of edges reached. in <eval> at line number 10 at column number 2 
--> <eval>:10:2 java.lang.RuntimeException: Maximum number of edges reached. 
--> java.lang.RuntimeException: Maximum number of edges reached. [ONetworkProtocolHttpDb] 
+0

あなたの答えをありがとう、これは素晴らしいですが、私の質問は、Java APIでそれを行う方法です。コード側よりもユーザーがコードを書くことなくそれを変更できるので、私はJavaフックをチェックします、もう一度ありがとう –

関連する問題