我有两个实体,我们称之为Alpha和Beta。
它们之间存在一对多关系,因此Beta具有Alpha的外键MyAlphaId
,因此引用属性MyAlpha
。
我有一个为Alphas构建的谓词。
e.g。
var predicateAlpha = new Predicate('name', 'contains', 'somevalue');
我希望然后将其“转置”到Beta的查询中,其myAlpha
属性与该谓词匹配。
e.g。
var predicateBeta = new Predicate('myAlpha', 'in', predicateAlpha);
我知道能够以下列方式构造谓词:
var predicateBeta = new Predicate('myAlpha.name', 'contains', 'somevalue');
我的问题是我不知道谓词是什么。我不能只预先挂起'myAlpha.'
,因为它可能包含一个OData函数,例如'concat('somefield', 'someotherfield')'
。
关于如何实现这一目标的任何其他想法或建议?
对我来说,IN接受一个允许这种情况发生的谓词是有意义的......我看不到源代码接受谓词所以我想不出怎样才能让这种情况发生......
答案 0 :(得分:0)
假设Alpha
具有属性betas
,您可以使用谓词查询Alpha,并使用expand
Betas查询它们,以便它们也被引入。如果您需要Betas,请在单个列表中收集Betas:
var query = em.createQuery(predicateAlpha).expand('betas');
var betas = [];
em.executeQuery(query).then(queryResult => {
queryResult.results.forEach(alpha => {
betas = betas.concat(alpha.betas);
});
});