2017-10-10 184 views
0

我有兩個實體,我們稱它們爲Alpha和Beta。Breeze謂詞子查詢

它們之間存在一對多的關係,因此Beta具有Alpha的外鍵,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'); 

我的問題是,我不知道謂詞可能是什麼。我不能預先申請'myAlpha.',因爲它可能包含OData函數,如'concat('somefield', 'someotherfield')'

有關我如何實現此目的的任何其他想法或建議?

對我來說,IN接受一個允許發生這種情況的謂詞是有意義的......我看不到接受謂詞的源代碼,所以我想不出如何做到這一點..

回答

0

假設Alpha有一個屬性betas,您可以使用謂詞查詢阿爾法,並使用BETA查詢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

是的,這並穿過我的腦海裏,實際上是工作圍繞我用過,只是帶來了我的架構框架內其自身的侷限性。 –