0

私は 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'

これは、タグに 1 つ以上の指定された値を持つ 1 つ以上の文字列があり、otherVar の不等式検索と一緒に、すべての結果を返すようです。

ただし、以下は機能しません。

(tags.contains('a')  || tags.contains('_a'))  &&  (tags.contains('b')  || tags.contains('_b')) && otherVar > 'a' && otherVar < 'z'

この場合、少なくとも 1 つの a (a または _a のいずれか) と 1 つの b (b または _b のいずれか) が存在するすべてのヒットが、以前の不等式検索と一緒に必要です。

しかし、問題は、a はあるが b がないという結果が返されることです。これは、私が望んでいるものではありません。

明らかな何かを見逃しているか、コーディング エラーを行っているか、または appengine でこれらのクエリを作成する方法に制限がある可能性があるため、ヒントやヘルプは大歓迎です。

よろしくクラス

4

1 に答える 1

0

簡単に言えば、現在 App Engine でこれを行うことはできないということです。独自の状況で機能する回避策を作成しましたが、すべての状況に対応できるわけではないため、ここには投稿しません。

このようなクエリが必要な場合は、データモデルの再構築を検討してください。

于 2010-05-23T11:46:07.393 に答える