我有一个名为调查问卷的表,它包含一个 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 中引发错误。怎么解决这个问题
我建议您启用
nativeQuery = true
,它会解决问题。
@Query(value = "select * from Questionnaire u where u.questionnaire @> = ?1", nativeQuery = true)
List<Questionnaire> findFromQuestionnaireQuery(String json);