2017-03-08 20 views
2

私はhibernate userTypeDataを作成し、postgresテーブルのjsonbデータ型に自分のオブジェクト(「データ」と呼ばれる)を正常にマップしました。今、私はjsonb列を照会するためにJpaRepositoryを使用しようとしていますが、成功しません。これは私がクエリに使用するコードです:spring jpa @query注釈を使用してpostgres jsonbを照会

public interface GenieEntityDao extends JpaRepository<GenieEntity, Long>, QueryByExampleExecutor<GenieEntity> { 

    @Query(value = "SELECT e FROM from genie_entities e WHERE e.data ->> 'temp' = '30'", nativeQuery = true) 
    public List<GenieEntity> findByTempBiggerThan(String temp); 

} 

が、これは私が得た例外です:

org.springframework.dao.InvalidDataAccessApiUsageException: Unknown parameter position: 1; nested exception is java.lang.IllegalArgumentException: Unknown parameter position: 1 

誰もが@queryアノテーションを使用してjsonb列を照会する方法を知っていますか?

+0

バネデータメソッドパラメータがある場合は、クエリ文字列( ':temp'または'? ')の中にパラメータプレースホルダを使用する必要があります。 – pozs

答えて

1

回答:postgresのjsonb列のクエリ構文は次のように行くことができます - >

@Query(value = "SELECT * FROM genie_entities WHERE data ->> ?1 > ?2", nativeQuery = true) 
public List<GenieEntity> findByDataFilterBigger(String key, String value); 

それは動作します。 :)

関連する問題