3

HibernateCriteriaAPIからJPA2CriteriaAPIにアップグレードしていますが、次の問題が発生していますが、解決できないようです。

Hibernate Criteriaでは、Restrictions.sqlRestrictionを使用して、特定の種類の文字列サブセットをチェックしていました。

criteria.add(Restrictions.sqlRestriction("{alias}.location_key = left((?), length({alias}.location_key))", searchObj.getLocationKey(), Hibernate.STRING));

これは基本的Nに、入力文字列の最初の文字が文字長のlocation_keyと一致することを確認しNます。つまり、入力文字列は、、、またはCanada,ONのようなものと一致する必要があります。CanadaCanC

問題は、JPA2ではそのようなネイティブSQLをコーディングできないことです。また、left関数なしで同様のことを実現する方法がわかりません(mysql固有の可能性があると思います)。

どんな助けでも大歓迎です!

4

1 に答える 1

1

クエリがどのように機能するか正確にはわかりませんが、LEFT()の代わりにCriteriaBuilder.substring(Expression、int)を使用できるべきではありませんか?生成したい実際のSQLを提供していただければ、より良いアイデアが浮かぶかもしれません。

于 2011-04-27T06:44:16.430 に答える