0

クラスがあります

       class  A  {
            String aField;
            String bField;
     }

       class  B {
             A   classAField
     }

制限を使用して HQL を構築します

  Restrictions.like(propertyName, obj);

propertyName は、すべてのスペースを削除するために Oracle SQL 関数で囲まれているため、propertyName は次のようになります。

  replace(classAField.aField,' ')

そして、次のエラーが発生しました

  could not resolve property: replace(classAField of: B; nested exception is org.hibernate.QueryException: could not resolve property: replace(classAField of: B

hiberante は pl/sql 関数を認識できません。私はオラクル10gダイアグレクトを使用しています

<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>

is there a work around here?

どうもありがとう

4

2 に答える 2

0

このために、おそらく必要ですRestrictions.sqlRestriction

特定の状況で動作させるには多少の作業が必要になる場合がありますが、通常はこのような問題を回避できます。

特定のエンティティの特定のフィールドに使用しても、どこでも使用する必要はありません。他の制限と組み合わせることができます。

于 2013-02-25T01:39:04.130 に答える
0

OK、基準クエリは、sqlRestriction を使用する場合を除き、関数を認識しません

于 2013-03-13T04:43:45.573 に答える