0

次のコードは、文字列フィールドに SQL 予約語「by」が含まれているため、例外をスローしています。この予約語をどのようにエスケープしますか。このコードは、Google データストア用です。

String field="Hosted by me"
PersistenceManager pm=PMF.get().getPersistenceManager();
    try{
    Query query=pm.newQuery("select from "+SomeObject.class.getName()
            +" where mField=='"+field+"'");
    _logger.info(query.toString());
    SomeObject=query.execute();
    }finally{
        pm.close();
    }

例外は次のとおりです: org.datanucleus.exceptions.NucleusUserException: クエリに、順不同の JDOQL キーワード (「by」) が含まれています。キーワードは、定義された順序でのみ使用できます。

4

1 に答える 1

2

これを試して:

PersistenceManager pm = ...;
try {
  Query quer = pm.newQuery("select from " + SomeObject.class.getName()
                          " where mField == mFieldParam" +
                          " parameters String mFieldParam");
  List<SomeObject> results = (List<SomeObject>) query.execute("Hosted by me");
} finally {
  ...
}
于 2011-10-15T22:13:04.880 に答える