可能错误的表达式
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
处理此事件的SPI方法是possiblyWrongExpression()
某些表达式很可能出现错误,即使它们在大多数情况下是正确的,或者在编写表达式的开发人员所知的范围内是正确的。
为什么这不好?
墨菲定律指出,表达式出错的微小风险最终意味着最好尽快修复它。可能错误的表达式的各种例子包括
-
MOD(x, 2) = 1用于奇数检查不适用于负数。请与零进行比较:MOD(x, 2) != 0
这里给出了一个例子
// A custom DiagnosticsListener SPI implementation
class PossiblyWrongExpression implements DiagnosticsListener {
@Override
public void possiblyWrongExpression(DiagnosticsContext ctx) {
// The statement that is being executed and which has a possibly wrong expression.
System.out.println("Actual statement: " + ctx.actualStatement());
// The possibly wrong expression.
System.out.println("Predicate : " + ctx.part());
}
}
然后
// Configuration is configured with the target DataSource, SQLDialect, etc. for instance Oracle.
try (
Connection c = DSL.using(configuration.derive(new PossiblyWrongExpression()))
.diagnosticsConnection();
Statement s = c.createStatement()
) {
try (ResultSet a = s.executeQuery("SELECT id FROM author WHERE MOD(id, 2) = 1")) {
while (a.next())
println(a.getInt(1));
}
}
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!