根据逻辑检索实体

时间:2018-08-20 07:01:01

标签: java xodus

我有此代码:

EntityIterable iterable = null;
                    if(authId== null) {
                        iterable = txn.find(entityType, "publicRead", true).skip(skip).take(limit);
                    } else {
                        iterable = txn.getAll(entityType)
                                .union(txn.find(entityType, "read(" + authId+ ")", true))
                                .union(txn.find(entityType, "publicRead", false))
                                .union(txn.find(entityType, "publicRead" ,true)).skip(skip).take(limit);
                    }
}

我正在尝试根据这种逻辑找到一种获取结果的方法:

  • 如果publicRead为true,则返回所有具有该属性的实体 设置为true(琐事)

问题是这样的:

  • 如果存在authId,则使用publicRead = false && read(userIdauthIdRoleId) = truepublicRead = true && read(authId) = true检索所有实体

如何使用Xodus API来实现?

1 个答案:

答案 0 :(得分:1)

这可以通过以下方式实现:

EntityIterable publicRead = txn.find(entityType, "publicRead", true);

EntityIterable result;

if (authId == null) {
    result = publicRead;
} else {
    result =
        txn.getAll(entityType).minus(publicRead).intersect(txn.find(entityType, "read(userIdauthIdRoleId)", true))
        .union(publicRead.intersect(txn.find(entityType, "read(" + authId + ")", true)));
}

result = result.skip(skip).take(limit);