2

私は現在、プロジェクトにSQLKormaを使用していますが、少し問題が発生しています。

2 つの左結合を使用してクエリを作成しました。WHEREそのうちの 1 つは、句で使用したいエントリを含む配列を含んでいます。

これを SQL で表現するのは簡単です。これは主に編集されたクエリであることに注意してください。

SELECT
  cu.name,
  c.description,
  c.created_at AT TIME ZONE 'utc'
FROM calendar_users cu LEFT JOIN calendars c ON cu.id = c.user_id
  LEFT JOIN meetings m ON c.id = m.id
WHERE 'status_report' ILIKE ANY (m.meeting_metadata)
GROUP BY m.meeting_metadata, c.created_at, cu.name, cu.description
ORDER BY c.created_at DESC

に関する部分は、ILIKE ANYコルマに翻訳できるようにしたいものです。

ドキュメントから、ANY句が句からサポートされていないことを理解しています。代わりにorWHEREを使用することを検討する必要があります。rawexec-raw

それで、パラメータraw化された文字列をWHERE句に渡して、目的を達成したいと考えています。

これを試みましたが、Postgres の構文エラーで失敗します。

(select calendars
    (fields calendar-user-cols)
    (join :calendar_users (= :calendars.user_id :calendar_users.id))
    (join :meetings (= :calendars.id :meetings.id))
    (where (raw ["? ILIKE ANY(meetings.meeting_metadata)" metadata])))

具体的には:

PSQLException:
 Message: ERROR: syntax error at or near "["
  Position: 1006
 SQLState: 42601
 Error Code: 0

Kormaを使用してこれを行うにはどうすればよいですか? 本格的なexec-rawクエリに頼る必要がありますか?

4

1 に答える 1