使用Slick编写相当钝的JSON查询

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

我正在寻求将SQL查询(Postgres)转换为Scala Slick代码,以便在我的Play应用程序中使用。

数据看起来像这样:

parent_id | json_column
----------+-----------------------------------------
          | [ {"id": "abcde-12345", "data": "..."}
2         | , {"id": "67890-fghij", "data": "..."}
          | , {"id": "klmno-00000", "data": "..."} ]

这是我在PostgreSQL中的查询:

SELECT * FROM table1
WHERE id IN (
  SELECT id
  FROM
    table1 t1,
    json_array_elements(t1.json_column) e,
    json_to_record(e.value) AS r("id" text, data text)
  WHERE
    "id" = 'abcde-12345'
    AND t1.parent_id = 2
);

这找到了我需要的结果; t1中任何在ID为“ abcde-12345”的json_column数组中包含“行”的对象。 “ parent_id”和“ id”将通过查询参数(均为字符串)传递给此查询。

我将如何使用Slick在Scala中编写此查询?

postgresql scala slick
1个回答
0
投票

最容易-也许最懒? -方法可能只是使用普通sql ..

sql"""[query]""".as[ (type1,type2..) ]

对变量使用$var符号。

否则,您可以使用SimpleFunction映射json调用,但是当它们每行生成多个结果时,我不太确定如何工作。似乎可能会变得复杂。.

© www.soinside.com 2019 - 2024. All rights reserved.