29
29
import javax .sql .rowset .serial .SerialBlob ;
30
30
import javax .sql .rowset .serial .SerialClob ;
31
31
32
+ import org .hibernate .jpa .TypedParameterValue ;
32
33
import org .hibernate .procedure .ProcedureCall ;
33
34
import org .hibernate .type .BigDecimalType ;
34
35
import org .hibernate .type .BigIntegerType ;
71
72
72
73
/**
73
74
* @author Vlad Mihalcea
75
+ * @author Yanming Zhou
74
76
*/
75
77
public class StoredProcedureParameterTypeTest extends BaseNonConfigCoreFunctionalTestCase {
76
78
@@ -422,4 +424,49 @@ public void testStringTypeInParameterIsNullWithoutEnablePassingNulls() {
422
424
}
423
425
);
424
426
}
427
+
428
+ @ Test
429
+ @ TestForIssue (jiraKey = "HHH-15618" )
430
+ public void testTypedParameterValueInParameter () {
431
+ inTransaction (
432
+ session -> {
433
+ ProcedureCall procedureCall = session .createStoredProcedureCall ( "test" );
434
+ procedureCall .registerParameter ( 1 , StringType .class , ParameterMode .IN );
435
+ procedureCall .setParameter ( 1 , new TypedParameterValue ( StringType .INSTANCE , "test" ) );
436
+
437
+ procedureCall = session .createStoredProcedureCall ( "test" );
438
+ procedureCall .registerParameter ( "test" , StringType .class , ParameterMode .IN );
439
+ procedureCall .setParameter ( "test" , new TypedParameterValue ( StringType .INSTANCE , "test" ) );
440
+ }
441
+ );
442
+ }
443
+
444
+ @ Test
445
+ @ TestForIssue (jiraKey = "HHH-15618" )
446
+ public void testTypedParameterValueInParameterWithEnablePassingNulls () {
447
+ inTransaction (
448
+ session -> {
449
+ ProcedureCall procedureCall = session .createStoredProcedureCall ( "test" );
450
+ procedureCall .registerParameter ( 1 , StringType .class , ParameterMode .IN ).enablePassingNulls ( true );
451
+ procedureCall .setParameter ( 1 , new TypedParameterValue ( StringType .INSTANCE , null ) );
452
+ }
453
+ );
454
+ }
455
+
456
+ @ Test
457
+ @ TestForIssue (jiraKey = "HHH-15618" )
458
+ public void testTypedParameterValueInParameterWithNotSpecifiedType () {
459
+ inTransaction (
460
+ session -> {
461
+ try {
462
+ ProcedureCall procedureCall = session .createStoredProcedureCall ( "test" );
463
+ procedureCall .registerParameter ( 1 , StringType .class , ParameterMode .IN );
464
+ procedureCall .setParameter ( 1 , new TypedParameterValue ( IntegerType .INSTANCE , 1 ) );
465
+ }
466
+ catch (IllegalArgumentException e ) {
467
+ assertTrue ( e .getMessage ().contains ( "was not of specified type" ) );
468
+ }
469
+ }
470
+ );
471
+ }
425
472
}
0 commit comments