Spring boot 2 - hibernate выбирает только часть выходного параметра - PullRequest
0 голосов
/ 13 октября 2019

У меня есть хранимая процедура mssql, которая возвращает html-содержимое, но когда я запускаю хранимую процедуру, используя hibernate, она не получает полные данные из выходного параметра, ResultText. Вот как я вызываю хранимую процедуру

StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Sp_Tab_PrintInvoice");

query.registerStoredProcedureParameter("Invno", Long.class, ParameterMode.IN);
query.registerStoredProcedureParameter("Ccode", Integer.class, ParameterMode.IN);
query.registerStoredProcedureParameter("UserName", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("Result", Integer.class, ParameterMode.OUT);
query.registerStoredProcedureParameter("ResultText", String.class, ParameterMode.OUT);

query.setParameter("Invno", invoiceDto.invoiceNumber);
query.setParameter("Ccode", invoiceDto.cCode);
query.setParameter("UserName", invoiceDto.userName);
query.execute();

String message = (String) query.getOutputParameterValue("ResultText");
System.out.println(message);

Тип данных ResultText равен nvarchar (max) в процедуре

Когда я запускаю процедуру из идеи intellij, она возвращается полностьюdata.

Мне не хватает какой-либо конфигурации?

Что мне сделать, чтобы получить полные данные в выходном параметре?

Пожалуйста, спросите, нужны ли вам дополнительные подробности

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Наконец, после долгих шагов по отладчику, я обнаружил, что hibernate объявил параметр как nvarchar(4000) для ResultText, потому что я отобразил его как

query.registerStoredProcedureParameter("ResultText", String.class, ParameterMode.OUT);

для большихтексты, NTextType, которые не усекают текст до 4000 символов. Я изменил на

query.registerStoredProcedureParameter("ResultText", NTextType.class, ParameterMode.OUT);

, и hibernate объявил параметр как nvarchar(max)

, и проблема решена.

0 голосов
/ 14 октября 2019

Пожалуйста, если вы упомянули размер поля в конфигурациях гибернации, это может быть одной из возможных причин такого поведения.

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