0

このコードの実行中:

note = noteDAO.queryForFirst(
    noteDAO.queryBuilder().where().notIn("id",
        noteStateDAO.queryBuilder().distinct().selectColumns("noteId")
        .prepare())
    .prepare());

...次の例外があります:

Problems executing Android query: SELECT * FROM `notes` WHERE `id` NOT IN 
     (MappedStatement: SELECT DISTINCT `noteId` FROM `note_states`)

MappedStatementその SQLの内容についてのアイデアはありますか?

4

2 に答える 2

1

問題は解決したようですが、もう少し情報を提供したいと思いました。

このWhere.notIn(...)メソッドは、オブジェクトまたはQueryBuilder引数のいずれかを取ります。を実行することで、残念ながら として渡されたprepare()に変わります。MappedQueryObject

あなたが言及したように、を削除すると、引数prepare()が使用されます。のjavadoc をQueryBuilder参照してください。notIn(String, QueryBuilder)

ORMLiteバージョン 4.43で、準備されたクエリを渡すことに対するより良いチェックを追加しました。

于 2012-10-05T22:19:16.713 に答える
0

わかりました、自分で見つけました。prepare内部の副選択クエリは必要ありません。

note = noteDAO.queryForFirst(
    noteDAO.queryBuilder().where().notIn("id",
        noteStateDAO.queryBuilder().distinct().selectColumns("noteId")
        /*.prepare()*/)
    .prepare());
于 2012-10-05T22:07:14.583 に答える