我似乎遇到了JPA / Hibernate和可用SQL Server驱动程序的限制。 (我知道的两个驱动程序是jTDS和微软的驱动程序)。
我的要求是调用存储过程:
以下是程序签名:
procedure [dbo].[pTest]
@outParam varbinary(max) out
,@optParam1 varchar(max) = null
,@optParam2 varchar(max) = null
-- optParam1 or optParam2 can be null. But both cannot be null.
理想情况下,我想将Spring Data JPA与jTDS结合使用。但jTDS失败1 b / c它截断为8k字节。它通过2 b / c我不必指定具有默认值的参数。
使用Microsoft的驱动程序,1次通过(AFAIK)。 2失败b / c我必须指定params到非null值。如果我不这样做,那么我的指数超出范围。但是如果我指定optParam1,我必须为每个Hibernate赋予一个非null值。如果我给它一个非空值,存储过程会抱怨b / c它有一个规则,即optParam1和optParam2都不能都具有非空值。
使用Spring Data JPA / JPA可以满足我的要求吗?我必须在这些要求范围内工作。因此,如果不支持使用JPA,那么在Java中有没有替代方法呢?