NUMBER (実際には、BigDecimal、理由は聞かないでください) 列を持つ静的メタモデルがあります。次に、その数値列に対して LIKE クエリを実行したいと思います。
CriteriaBuilder cb;
cb.like(entity.get(Entity_.numbercol), "123%");
where をentity.get(Entity_.numbercol)
返しますPath<BigDecimal>
。当然、コンパイル エラーが発生します。...like(Expression<String>, ...) ... not applicable for the arguments (Path<BigDecimal>, ...)
JPAのバグが原因で列のキャストに.as(String.class)
失敗しましたが、現在バグ番号が手元にありません。ただし、JPA/Hibernate の最新バージョンでは修正されていません。とにかく、無効な SQL ステートメントが生成されているという実行時例外が発生します。
ここで、SQL に相当する基準 API を取得する方法が必要です。
... WHERE numbercol LIKE '123%';
トピックを検索すると、既に以下の応答が表示されましたが、静的メタモデルを使用しているため役に立ちません: NHibernate - Criteria API で整数列に対して LIKE 検索を行う最も簡単な方法 およびJPA/Criteria API - Like & equal 問題
何か案は?
前もって感謝します ドミニク