質問: syainRepository.findAll( Specifications // 検索条件(ユーザ名) .where(SyainSpecifications.userNameContains(userName)) , pageable); ``` ▼SyainSpecifications▼ ``` public static Specification userNameContains(final String userName) { return StringUtils.isEmpty(userName) ? null : new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) { return cb.like(root. get("userName"), "%" + userName + "%"); } }; } ``` 現状のコードは上記のような状態ですが、 このままですとSQLのWhere句が以下のようになります。 > > Where userName like '%【パラメータ】%' > > > これを以下のとおりCOLLATEを指定するように修正したいのですが、 > > Where userName like '%【パラメータ】%' COLLATE utf8_unicode_ci > > > 教えて頂けますでしょうか。 よろしくお願いします。 ### 補足情報 * Framework:Spring4.X * DB:MySQL
回答: ネイティブSQLを作成することで回避しました。 ただ、ネイティブSQLだと動的にSQLを作成することが出来なく、 条件に合わせて複数作成しても どうしても処理に制限が出来てしまうので、 いい方法があれば、情報提供お願いします。