Manejo de Derby de valores NULL

Soy nuevo en Derby y noté que me enfrento a problemas similares a los de utilizar el RDBMS de DB2 en lo que respecta anull los valores están preocupados. La documentación de Derby establece que unnull el valor debe tener un tipo asociado (algo que DB2 finalmente eliminó en la versión 9.7):

http://db.apache.org/derby/docs/10.7/ref/crefsqlj21305.html

Ahora estoy tratando de encontrar ungeneral solución a este problema aquí ya que esto será parte de mi biblioteca de abstracción de base de datosjOOQ. El siguiente ejemplo solo documenta el problema. Piense en cualquier otro ejemplo (más complejo). Lo siguiente no funciona:

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  1000, 'Lukas', 'Eder', 
  '1981-07-10', null, null 
from SYSIBM.SYSDUMMY1

Tampoco esto (que es lo que realmente hace jOOQ):

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select ?, ?, ?, ?, ?, ? 
from SYSIBM.SYSDUMMY1

Porque los dosnull Los valores no tienen ningún tipo asociado. La solución sería escribir algo como esto:

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  1000, 'Lukas', 'Eder', 
  '1981-07-10', cast(null as int), cast(null as varchar(500)) 
from SYSIBM.SYSDUMMY1

O así, respectivamente

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  ?, ?, ?, ?, cast(? as int), cast(? as varchar(500)) 
from SYSIBM.SYSDUMMY1

Pero muy a menudo, en Java, el tipo quenull debe ser lanzado a es desconocido:

En este ejemplo, los tipos podrían derivarse de la cláusula insert, pero eso podría resultar complicado o imposible para casos de uso más generales.En otros ejemplos, podría elegir cualquier tipo para el reparto (por ejemplo, enviar siempre aint), pero eso no funcionaría en este ejemplo, ya que no puede poner uncast(null as int) valor enADDRESS.Con HSQLDB (otro candidato para este problema), simplemente puedo escribircast(null as object) que funcionará en la mayoría de los casos. Pero Derby no tiene unobject tipo.

Este problema me ha molestado antes con DB2 y todavía no he encontrado una solución. ¿Alguien sabe de unestableygeneral solución a este problema para cualquiera de estos RDBMS?

derbyDB2

Respuestas a la pregunta(4)

Su respuesta a la pregunta