Установите случайное семя на Postgres, используя спящий режим - PullRequest
0 голосов
/ 14 апреля 2020

Я не очень знаком с Hibernate, но мне нужно установить случайное начальное число в базе данных PostgreSQL с помощью Hibernate.

Это то, что я пытаюсь запустить:

String seedSql = "select setseed(0.123)";
Query seedQuery = entityManager.createQuery(seedSql);
seedQuery.getSingleResult();

Однако этот запрос не возвращает ни одной сущности, сопоставленной Hibernate, поэтому я получаю следующую ошибку:

org.hibernate.QueryException: Нет типа данных для узла: org.hibernate .hql.internal.ast.tree.MethodNode (...)

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

После некоторых проб и ошибок я заметил, что мне пришлось использовать .createNativeQuery(), поскольку setseed() - это функция из PostgreSQL:

String seedsql = "select cast(setseed(0.123) as text)";
Query seedQuery = DatabaseInterface.getEm().createNativeQuery(seedsql);
seedQuery.setMaxResults(1).getSingleResult();

Я использовал cast(setseed(0.123) as text), чтобы избежать другой ошибки:

org.hibernate.MappingException: нет отображения диалектов для JDB C тип: 1111

0 голосов
/ 15 апреля 2020

Согласно документам , createQuery() принимает строку JPQL и, очевидно, не знает, что делать с вызовом функции Postgres.

Чтобы выполнить запрос SQL, используйте createNativeQuery().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...