没有标准的方法可以做到这一点。据我所知,SQL标准不支持声明使用
DEFAULT直通参数的机制。SQL标准似乎假定每个对象
INSERT都是为特定目的而设计的。因此,声明
DEFAULT只能在insert语句本身中进行,而不能作为参数的值进行。在这些决策中,JDBC规范通常遵循SQL标准。
当前唯一的方法是在JDBC驱动程序中创建特定于供应商的方法,例如您在问题本身中指定的方法,但是您还可以想到以下内容:
需要澄清的是:下面是一个驱动程序实现如何解决它的示例,它实际上并不是这样工作的。
使用
setNull(int,int)
setNull(idx, PostgresTypes.DEFAULT_VALUE)
或使用
setNull(int, int,String)
setNull(idx, Types.<correct-field-type>, Postgres.DEFAULT_VALUE_MARKER)
但是,这是假设PostgreSQL实际上有一种
DEFAULT通过参数指定的方法,或者驱动程序实现将为每个接收到的参数集解析并重新创建语句,以便它可以声明文字
DEFAULT。
我不知道当前是否有任何驱动程序支持这种解决方法。



