假设我有一个有三列的表:id
,name
,state
。state
列的类型为jsonb
,并且该结构将始终(作为最小值)具有一个名为active
的键,例如
{"name": "some_name", active: true, ...}
{"name": "one_two", active: false, ...}
我已经通过编写自己的@WritingConverter
和@ReadingConverter
(到PGobject
)获得了序列化和反序列化的一切,因此我可以编写一个查询,然后在Java级别执行过滤器,因此只有那些"活跃"的才保留。
但是,我如何在Spring Data JDBC中编写一个查询,允许我在DB级别查询json列?
您可以使用@Query
注释和数据库提供的任何工具来查询json。
只是作为一个例子本教程使用JSON的Postgres建议之类的应该工作。
@Query("select * from mytable where state ->> 'active' = :active ")
List<MyTable> findAllActive(String active)
您可能可以将state ->> 'active'
转换为合适的内容,以便您可以使用boolean
作为方法参数,但我将从简单的内容开始。