sql >> Base de Datos >  >> RDS >> PostgreSQL

Error de bytea de Postgres al vincular nulo a declaraciones preparadas

Al no haber recibido ningún comentario en forma de respuestas o incluso un comentario, estaba a punto de rendirme cuando me topé con esta excelente entrada de blog:

Cómo vincular tipos de parámetros personalizados de Hibernate a consultas JPA

La publicación ofrece dos opciones para controlar los tipos que JPA pasa a través del controlador a Postgres (o cualquiera que sea la base de datos subyacente). Seguí el enfoque usando TypedParameterValue . Así es como se ve mi código continuando con el ejemplo anterior:

Query query = entityManager.createNativeQuery(sqlString, MyEntity.class);
query.setParameter("param1", new TypedParameterValue(StringType.INSTANCE, null));
query.setParameter("param2", new TypedParameterValue(DoubleType.INSTANCE, null));
List<MyEntity> = query.getResultList();

Por supuesto, es trivial pasar null para cada parámetro en la consulta, pero estoy haciendo esto principalmente para mostrar la sintaxis del texto y las columnas dobles. En la práctica, esperaríamos que al menos algunos de los parámetros no sean null , pero la sintaxis anterior maneja todos los valores, nulos o no.