Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringBoot2-hibernate只获取输出参数的一部分_Hibernate_Spring Boot_Sql Server 2008 - Fatal编程技术网

SpringBoot2-hibernate只获取输出参数的一部分

SpringBoot2-hibernate只获取输出参数的一部分,hibernate,spring-boot,sql-server-2008,Hibernate,Spring Boot,Sql Server 2008,我有一个返回html内容的MS SQL存储过程,但当我使用hibernate运行该存储过程时,它不会从输出参数ResultText获取完整数据。这就是我调用存储过程的方式 StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Sp_Tab_PrintInvoice"); query.registerStoredProcedureParameter("Invno"

我有一个返回html内容的MS SQL存储过程,但当我使用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 Idea运行该过程时,它将返回完整的数据


我是否缺少一些配置?如何获取输出参数中的完整数据?

如果您提到了hibernate配置中字段的大小,这可能是导致此行为的原因之一。

最后,经过多次调试后,我发现hibernate将参数声明为
nvarchar(4000)
用于
ResultText
,因为我已将其映射为

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

对于大文本,有,
NTextType
,它不会截断4000个字符的文本。我改成

query.registerStoredProcedureParameter(“ResultText”,NTextType.class,ParameterMode.OUT)

hibernate将参数声明为
nvarchar(max)


问题解决了。

我没有提到尺寸?如何配置hibernate以获取所有数据?