Protože jsem neobdržel žádnou zpětnou vazbu ve formě odpovědí nebo dokonce komentáře, chystal jsem se to vzdát, když jsem narazil na tento skvělý blogový příspěvek:
Jak svázat vlastní typy parametrů Hibernate s dotazy JPA
Příspěvek poskytuje dvě možnosti pro ovládání typů, které JPA předává ovladači Postgresu (nebo čemu je vlastně podkladová databáze). Použil jsem přístup pomocí TypedParameterValue
. Zde je, jak můj kód vypadá, pokračující s příkladem uvedeným výše:
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();
Samozřejmě je triviální předávání null
pro každý parametr v dotazu, ale dělám to hlavně proto, abych ukázal syntaxi pro text a dvojité sloupce. V praxi bychom očekávali, že alespoň několik parametrů nebude null
, ale výše uvedená syntaxe zpracovává všechny hodnoty, null i jiné.