2017-03-08 179 views
2

我創建了一個hibernate userTypeData,併成功將我的對象(稱爲「數據」)映射到postgres表中的jsonb數據類型。現在,即時嘗試使用JpaRepository來查詢該jsonb列,但沒有成功。這是我使用的查詢代碼:使用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

如果您有spring-data方法參數,則應在查詢字符串(':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); 

它的工作原理。 :)