根据逻辑检索实体
Retrieve Entities based on logic
我有这个代码:
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
为真,则 return 所有具有 属性 的实体
设置为真(琐事)
问题是这样的:
- 如果
authId
存在,则检索具有 publicRead = false && read(userIdauthIdRoleId) = true
或 publicRead = true && read(authId) = true
的所有实体
如何使用 Xodus API 实现这一点?
这可以通过以下方式实现:
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);
我有这个代码:
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
为真,则 return 所有具有 属性 的实体 设置为真(琐事)
问题是这样的:
- 如果
authId
存在,则检索具有publicRead = false && read(userIdauthIdRoleId) = true
或publicRead = true && read(authId) = true
的所有实体
如何使用 Xodus API 实现这一点?
这可以通过以下方式实现:
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);