【发布时间】:2013-05-15 21:06:06
【问题描述】:
在包含自定义类型转换器之前,我的应用程序运行良好。我需要将 jOOQ UInteger 转换为 Integer,所以我包含了一个类型转换器来实现这一点。发布此更改后,我收到有关限制和偏移的 mysql 语法错误。
然后在调试时,我发现所有提供的 Integer 值(包括限制和偏移值)都转换为 UInteger(因为类型转换器),然后又转换为字符串,因为 UInteger 不是默认类型。
我可以通过链接jooq issue with limit and offset提供的解决方案来解决这个问题,但我想了解一些细节。
如果我使用
settings.setStatementType(StatementType.STATIC_STATEMENT),我无法获得准备好的语句,我可能会错过 PreparedStatement 的优势。如果我使用
Factory.inline绑定所有整数内联值,我必须在整个应用程序中执行此操作,如果我遗漏了某些内容,则会导致严重问题。
请帮助我解决问题或给我一些建议。
【问题讨论】:
-
我觉得你在这个问题中混合了几件事:类型转换,绑定变量内联。你现在想解决什么样的问题?
-
我想使用类型转换而不内联绑定变量。因为我不能内联绑定所有变量
-
我还是不太明白转换和变量绑定有什么关系……这是为了避免一些转换吗?您最初遇到的问题是什么?
-
原来的问题是:由于我使用自定义类型转换器在 Integer 和 UInteger 类型之间进行转换,所有整数值(包括限制和偏移值)都被转换为 UInteger 而不是仅转换 _ids 这实际上是在生成 jOOQ 类时配置的。希望你能解决我的问题!!
-
是的,我明白这一点,由于this ticket 中提到的原因,您不应该这样做。这是 jOOQ 处理转换器的设计缺陷。但是我现在该如何回答这个问题呢?在我看来,这个 Stack Overflow 问题实际上没有任何问题。我这边的问题是,您为什么首先尝试使用转换器?你不能只使用 UInteger.intValue() 吗?