EAV , , , .
, :
final Iterator<EAV> eavs = Iterators.transform(
datastoreService.prepare(
new Query(EAV.class.getSimpleName()).addFilter("a",
FilterOperator.EQUAL, "interests").addFilter(
"v", FilterOperator.EQUAL, "books"))
.asIterator(), new Function<Entity, EAV>() {
@Override
public EAV apply(final Entity input) {
return new EAV(input);
}
});
while (eavs.hasNext()) {
logger.debug("eav: " + eavs.next());
}
, 45 , -, a v:
final Iterator<EAV> eavs = Iterators.transform(
datastoreService.prepare(
new Query(EAV.class.getSimpleName()).addFilter("a",
FilterOperator.EQUAL, "interests").addFilter(
"v", FilterOperator.EQUAL, "books").addFilter("a",
FilterOperator.EQUAL, "age").addFilter(
"v", FilterOperator.LESS_THAN, 45))
.asIterator(), new Function<Entity, EAV>() {
@Override
public EAV apply(final Entity input) {
return new EAV(input);
}
});
while (eavs.hasNext()) {
logger.debug("eav: " + eavs.next());
}
, SQL (, ). , , .
OTOH " " :
final Iterator<Person> persons = Iterators.transform(
datastoreService
.prepare(
new Query(Person.class.getSimpleName())
.addFilter("interests",
FilterOperator.EQUAL, "books")
.addFilter("age",
FilterOperator.NOT_EQUAL, null)
.addFilter("age",
FilterOperator.LESS_THAN, 45))
.asIterator(), new Function<Entity, Person>() {
@Override
public Person apply(final Entity input) {
return new Person(input);
}
});
while (persons.hasNext()) {
logger.debug("person: " + persons.next());
}
.