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が入らない方で平気らしいです。