ExpressionFactory

you12724 14views 更新:2016年5月10日

cayenneのコードでExpressionFactoryを使っている部分があったので真似て書いたらエラーが出て少し詰まったので簡単に書きます。
役割としてはDBの検索クエリに条件をつけるような感じでSQLだとwhereとかの役割です。
ExpressionFactoryでは以下のように記述します。

        Expression exp1 =
          ExpressionFactory.matchExp( A, "検索したい値 x");
        query.setQualifier(exp1);
        Expression exp2 =
          ExpressionFactory.noMatchDbExp( B, "検索したい値 y");
        query.andQualifier(exp2);

この場合 A == x && B != y みたいな感じです。
躓いたところはmatchExpとnoMatchDbExpの場所ですが、Dbが入っているか入ってないかでABに入れるものが変わってくるという所に気づかずに詰まっていました。Dbを入れるとDB上のカラムを直接指定、Dbがないとマッピングされているカラム名を指定みたいな感じらしいです。基本的にはプライマリーキーにはDbが入る方、それ以外はDbが入らない方で平気らしいです。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません