【发布时间】:2014-08-25 11:46:11
【问题描述】:
我正在使用带有PostgresTemplates 的 QueryDSL SQL,并且我正在尝试将 UUID 参数放入查询中,但是当我执行此查询时:
UUID uuid = UUID.randomUUID();
QOrganization org = QOrganization.organization;
long count = new SQLQuery(connection, configuration)
.from(org)
.where(org.id.eq(uuid))
.count();
数据库抱怨:
org.postgresql.util.PSQLException: there is no operator does not exist: uuid = character varying
如何显式转换我的 UUID 参数?
【问题讨论】:
-
PostgreSQL 对某些类型非常严格,尤其是在大多数编程语言没有匹配类型的情况下。这似乎是一个这样的案例。您可以创建从文本到 uuid 的隐式转换 - 我已经为 xml、json 等编写了其他示例,因此请搜索 postgresql create implicit cast xml 或类似内容。或者您可以将 PgJDBC 设置为将文本参数作为未知类型传递,但这是一个非常大的锤子,因为它适用于所有查询。
标签: postgresql querydsl