我在数据库中有一个类型字段jsonb,由一组对象组成。
Jpa对这种数据不太适用,例如,如果我需要json根据某种标准找到 this 中的所有对象,那么就像我将无法JpaRepository返回List这些对象一样,我将首先需要返回List<Object>。然后通过mapper转换为我需要的模型。很显然,这不是一个很复杂的操作。但我决定走得更远,试试这个:也许你可以从某个类继承Spring Jpa以实现完全相同的行为,但在你自己的实现中,即立即@Query像往常一样编写并返回 example List<Интересующая модель>。也就是说,转换发生在我的实现中。该方法可以用一个新的注解来标记,例如@JsonToList,参数就是所需的模型类型。
我对更有经验的 Javasts 有一个问题,这甚至可能吗?吹牛值得吗?也许你会说这只是无利可图,你不需要费心,做一个助手类并通过它翻译更容易。
您可以使用jsonb_array_elements
PostgreSQL内置函数从列中读取对象数组。此外,对象的字段被分解为单独的列,并使用类的queryForList方法以表格形式卸载。jsonbjavaList<Map<String, Object>>JdbcTemplate请参阅查询 JSON 类型中的数组元素
示例:在 table 中
sql,类型列jsonb可以包含对象数组或仅包含对象:SQL查询:
返回值表:
来自
java:返回数据类型:
List<Map<String, Object>>。