来自 JPA 的 Postgres JSONB 类型查询

问题描述 投票:0回答:1

我有一个名为调查问卷的表,它包含一个 jsonb 类型的列,也称为调查问卷。我想使用 JPA 进行以下查询。

JSON-

{"guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a", "name": "Angela Barton", "tags": ["enim", "aliquip", "qui"], "address": "178 Howard Place, Gulf, Washington, 702", "company": "Magnafone", "latitude": 19.793713, "is_active": true, "longitude": 86.513373, "registered": "2009-11-07T08:53:22 +08:00"}

奎伊

SELECT * FROM questionnaire WHERE questionnaire @>'{"company": "Magnafone"}'; 

JPA 存储库代码

@Repository
public interface QuestionnaireRepository extends JpaRepository<Questionnaire, Long> {


    @Query("select u from Questionnaire u where u.questionnaire @> = ?1")
    List<Questionnaire> findFromQuestionnaireQuery(String json);
}

由于查询中有 @,它会在 JPA 中引发错误。怎么解决这个问题

java json hibernate jpa jsonb
1个回答
0
投票

我建议您启用

nativeQuery = true
,它会解决问题。

  @Query(value = "select * from Questionnaire u where u.questionnaire @> = ?1", nativeQuery = true)
  List<Questionnaire> findFromQuestionnaireQuery(String json);
© www.soinside.com 2019 - 2024. All rights reserved.