Тъй като не получих обратна връзка под формата на отговори или дори коментар, бях готов да се откажа, когато случайно попаднах на тази отлична публикация в блога:
Как да обвържете персонализирани типове параметри на Hibernate към JPA заявки
Публикацията дава две опции за контролиране на типовете, които JPA предава през драйвера на Postgres (или каквато и да е основната база данни в действителност). Използвах подхода, използвайки TypedParameterValue
. Ето как изглежда моят код, продължавайки с примера, даден по-горе:
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();
Разбира се, тривиално е да се предава null
за всеки параметър в заявката, но правя това главно, за да покажа синтаксиса за текста и двойните колони. На практика бихме очаквали поне няколко от параметрите да не са null
, но горният синтаксис обработва всички стойности, нулеви или други.