77
88import java .util .Collection ;
99import java .util .List ;
10+ import java .util .Map ;
1011import java .util .Objects ;
1112import java .util .function .Consumer ;
1213
14+ import org .hibernate .annotations .JdbcTypeCode ;
1315import org .hibernate .reactive .BaseReactiveTest ;
1416import org .hibernate .reactive .annotations .DisabledFor ;
17+ import org .hibernate .reactive .annotations .EnabledFor ;
18+ import org .hibernate .type .SqlTypes ;
1519
1620import org .junit .jupiter .api .Test ;
1721
2933import static org .hibernate .reactive .containers .DatabaseConfiguration .DBType .DB2 ;
3034import static org .hibernate .reactive .containers .DatabaseConfiguration .DBType .MARIA ;
3135import static org .hibernate .reactive .containers .DatabaseConfiguration .DBType .ORACLE ;
36+ import static org .hibernate .reactive .containers .DatabaseConfiguration .DBType .POSTGRESQL ;
3237import static org .hibernate .reactive .containers .DatabaseConfiguration .DBType .SQLSERVER ;
3338import static org .junit .jupiter .api .Assertions .assertEquals ;
3439
@@ -47,6 +52,39 @@ protected Collection<Class<?>> annotatedEntities() {
4752 return List .of ( Basic .class );
4853 }
4954
55+ @ Test
56+ @ EnabledFor (POSTGRESQL )
57+ public void nativeQuestionMarkOperatorForPostgres (VertxTestContext context ) {
58+ Basic basic = new Basic ();
59+ basic .jsonAsMap = Map .of ( "sport" , "Cheese Rolling" );
60+
61+ test ( context , getMutinySessionFactory ()
62+ .withTransaction ( s -> s .persist ( basic ) )
63+ .chain ( () -> getMutinySessionFactory ().withTransaction ( s -> s
64+ .createNativeQuery ( "select id from JsonEntity where jsonAsMap -> 'sport' \\ ? 'Cheese Rolling'" )
65+ .getSingleResult () )
66+ )
67+ .invoke ( result -> assertThat ( result ).isEqualTo ( basic .id ) )
68+ );
69+ }
70+
71+ @ Test
72+ @ EnabledFor (POSTGRESQL )
73+ public void nativeQuestionMarkOperatorWithParameterForPostgres (VertxTestContext context ) {
74+ Basic basic = new Basic ();
75+ basic .jsonAsMap = Map .of ( "sport" , "Chess boxing" );
76+
77+ test ( context , getMutinySessionFactory ()
78+ .withTransaction ( s -> s .persist ( basic ) )
79+ .chain ( () -> getMutinySessionFactory ().withTransaction ( s -> s
80+ .createNativeQuery ( "select id from JsonEntity where jsonAsMap -> 'sport' \\ ? ?" )
81+ .setParameter ( 1 , "Chess boxing" )
82+ .getSingleResult () )
83+ )
84+ .invoke ( result -> assertThat ( result ).isEqualTo ( basic .id ) )
85+ );
86+ }
87+
5088 @ Test
5189 public void testJsonType (VertxTestContext context ) {
5290 Basic basic = new Basic ();
@@ -92,6 +130,9 @@ private static class Basic {
92130
93131 private JsonObject jsonObj ;
94132
133+ @ JdbcTypeCode (SqlTypes .JSON )
134+ Map <String , Object > jsonAsMap ;
135+
95136 public Basic () {
96137 }
97138
0 commit comments