6

jDBI クエリでオプションの (null) パラメータを使用することは可能ですか? データベース クエリで動作するオプションのパラメータを取得しようとしています。私はドロップウィザードで作業しています。

@SqlQuery("SELECT * \n" +
          "FROM posts \n" +
          "WHERE (:authorId IS NULL OR :authorId = author_id)")
public List<Post> findAll(@Bind("authorId") Optional<Long> authorId);

authorId が渡されるとクエリは機能しますが、NULL の場合は次のエラーが発生します。

org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1

これは、私が呼び出しているリソース ルートです。

@GET
public ArrayList<Post> getPosts(@QueryParam("authorId") Long authorId)
{
    return (ArrayList<Post>)postDao.findAll(Optional.fromNullable(authorId));
}

私が読んだことから、これは可能であるため、何かが欠けているか、明らかな間違いがあると推測しています。どんな助けでも大歓迎です!

参考までに-guava Optional(dropwizardでサポートされています)なしでも試しました-authorIdをnullのLongとして送信するだけです。これは、null でない限り機能します。

4

1 に答える 1