2017-10-10 7 views
0

私は2つのエンティティを持っています。それらをアルファとベータと呼ぼう。副問い合わせ内のBreeze述語

ベータにはアルファへの外部キーがあるように1対多の関係があり、MyAlphaId、したがって参照プロパティMyAlphaです。

Alphas用に作成された述部があります。

var predicateAlpha = new Predicate('name', 'contains', 'somevalue'); 

私はそのmyAlphaプロパティはその述語に一致するベータ版のためのクエリにこれを「転置」にしたいです。

var predicateBeta = new Predicate('myAlpha', 'in', predicateAlpha); 

私は私が次のように述語を構築するための能力を認識しています:

var predicateBeta = new Predicate('myAlpha.name', 'contains', 'somevalue'); 

私の問題は、私はその述語があるかもしれないものを知らないということです。 'concat('somefield', 'someotherfield')'などのOData関数が含まれている可能性がありますので、あらかじめ'myAlpha.'を保留することはできません。

これを達成するための他の考えや提案はありますか?

私にとっては、これが起こることを可能にする述語を受け入れることは意味をなさないでしょう...私は述語を受け入れるソースコードを見ることができません。

答えて

0

Alphaのプロパティがbetasであると仮定すると、述語を使用してアルファをクエリでき、expandベータもクエリできるようになります。

var query = em.createQuery(predicateAlpha).expand('betas'); 
var betas = []; 
em.executeQuery(query).then(queryResult => { 
    queryResult.results.forEach(alpha => { 
     betas = betas.concat(alpha.betas); 
    }); 
}); 
+0

はい、それは私の心を越え、実際には私の使っていた回避策です。それは自分のアーキテクチャの枠組みの中で独自の制限をもたらします。 –

関連する問題