Я работаю с App Engine (Java / JDO) и пытаюсь выполнить некоторые запросы со списками.
Итак, у меня есть следующий класс:
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class MyEntity
{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
Key key;
@Persistent
List<String> tags = new ArrayList<String>();
@Persistent
String otherVar;
}
У меня работает следующий JDO-QL:
( tags.contains('a') || tags.contains('b') || tags.contains('c') || tags.contains('d') ) && otherVar > 'a' && otherVar < 'z'
Похоже, что возвращаются все результаты, в которых теги содержат одну или несколько строк с одним или несколькими заданными значениями и вместе с поиском неравенства в otherVar
Но следующее не работает:
(tags.contains('a') || tags.contains('_a')) && (tags.contains('b') || tags.contains('_b')) && otherVar > 'a' && otherVar < 'z'
В этом случае мне нужны все попадания, где есть хотя бы один a (или a или _a) и один b (либо b или _b) вместе с поиском неравенства, как и раньше.
Но проблема в том, что я также получаю результаты, где есть a, но нет b, а это не то, чего я хочу.
Возможно, я упустил что-то очевидное, или сделал ошибку кодирования, или, возможно, есть ограничение на то, как вы можете написать эти запросы в appengine, поэтому любые советы или помощь будут очень полезны.
С уважением
Клас