web-dev-qa-db-ja.com

where句にlikeを指定した名前付きクエリ

名前付きクエリのwhere句にlikeを含めることはできますか?私は次のことをしようとしていますが、例外が発生しています

@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
query = "SELECT p FROM Place p WHERE " +
        "lower(p.city) like :city and " +
        "lower(p.countryName) like :countryName");

通常のSQLと同じように%を追加しようとしましたが、例外のコンパイルが発生しました。

ポインタは大歓迎です!

ありがとう

27
RNJ

NamedQueryに%を含めることはできませんが、パラメーターに割り当てる値に含めることはできます。

次のように:

String city = "needle";
query.setParamter("city", "%" + city + "%");
51
esej

CONCAT関数も使用できます

@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
     query = "SELECT p FROM Place p WHERE " +
        "lower(p.city) like CONCAT(:city,'%')");
8
overmind1001
@Query("select c from Curso c where c.descripcion like CONCAT(:descripcion,'%')")

List<Curso> findByDescripcionIgnoreCase(@Param("descripcion") String descripcion);
6
jean