Criteria APIを見直しました.
従来,CriteriaOperations の提供するメソッドは,
eq("foo", 1) 等の第2引数はリテラルとして評価されるのに対し,
eq("foo", "a") 等の第2引数はリテラルではなくパス式として評価されました.
これまでは String 型の引数はパス式として扱うことを原則としてきたのですが,
数値や boolean 等を使った場合との一貫性や実際の利用場面を考慮し,
String型の第 2 引数は原則リテラルとして扱うこととしました.
第1引数は従来同様パス式として評価します.
concat() についても第 2 引数はリテラルとして評価します.
2 つのパス式を連結するには concat("foo", path("bar")) と記述することになります.
locate(String, String) の場合,第1引数が見つけたい文字列で,第2引数が操作対象の文字列です.
一般に,エンティティのプロパティ値からリテラルを見つけることは多くても,その逆は少ないと考えられます.
そのため,locate(String, String) に限っては第1引数はリテラル,第1引数はパス式として評価します.