@@ -65,9 +65,9 @@ protected void prepareTest()
6565 " (?, ?, ?, -1)"
6666 )) {
6767 int index = 1 ;
68- statement .setString ( index ++, value1 );
69- statement .setString ( index ++, value2 );
70- statement .setString ( index ++, value3 );
68+ statement .setClob ( index ++, session . getLobHelper (). createClob ( value1 ) );
69+ statement .setClob ( index ++, session . getLobHelper (). createClob ( value2 ) );
70+ statement .setClob ( index ++, session . getLobHelper (). createClob ( value3 ) );
7171
7272 assertEquals ( 1 , statement .executeUpdate () );
7373 }
@@ -77,57 +77,63 @@ protected void prepareTest()
7777
7878 @ Test
7979 public void testBadClobDataSavedAsStringFails () {
80- try {
81- doInHibernate ( this ::sessionFactory , session -> {
82- final Query query = session .createQuery ( "from TestEntity" );
80+ doInHibernate ( this ::sessionFactory , session -> {
81+ final Query query = session .createQuery ( "from TestEntity" );
8382
84- final List <TestEntity > results = query .list ();
83+ final List <TestEntity > results = query .list ();
8584
86- fail ("Exception thrown expected" );
87- } );
88- }
89- catch (Exception e ) {
90- Exception rootException = (Exception ) ExceptionUtil .rootCause ( e );
91- assertTrue ( rootException .getMessage ().startsWith ( "Bad value for type long" ) );
92- }
85+ assertThat ( results .size (), is ( 1 ) );
86+
87+ final TestEntity testEntity = results .get ( 0 );
88+ assertThat ( testEntity .getFirstLobField (), is ( value1 ) );
89+ assertThat ( testEntity .getSecondLobField (), is ( value2 ) );
90+ final Clob clobField = testEntity .getClobField ();
91+ try {
92+
93+ assertThat ( clobField .getSubString ( 1 , (int ) clobField .length () ), is ( value3 ) );
94+ }
95+ catch (SQLException e ) {
96+ fail ( e .getMessage () );
97+ }
98+ } );
9399 }
94100
95101 @ Test
96102 public void testBadClobDataSavedAsStringworksAfterUpdate () {
97103 doInHibernate ( this ::sessionFactory , session -> {
98104
99- session .doWork ( connection -> {
100- try (Statement statement = connection .createStatement ()) {
101- statement .executeUpdate (
102- "update test_entity\n " +
103- "set \n " +
104- " clobfield = lo_from_bytea(0, cast (clobfield as bytea )),\n " +
105- " firstlobfield = lo_from_bytea(0, cast (firstlobfield as bytea )),\n " +
106- " secondlobfield = lo_from_bytea(0, cast (secondlobfield as bytea ))"
107- );
108- }
109- } );
110- } );
105+ session .doWork ( connection -> {
106+ try (Statement statement = connection .createStatement ()) {
107+ statement .executeUpdate (
108+ "update test_entity\n " +
109+ "set \n " +
110+ " clobfield = lo_from_bytea(0, lo_get (clobfield)),\n " +
111+ " firstlobfield = lo_from_bytea(0, lo_get (firstlobfield)),\n " +
112+ " secondlobfield = lo_from_bytea(0, lo_get (secondlobfield))"
113+ );
114+ }
115+ } );
116+ } );
111117
112118 doInHibernate ( this ::sessionFactory , session -> {
113- final Query query = session .createQuery ( "from TestEntity" );
119+ final Query query = session .createQuery ( "from TestEntity" );
114120
115- final List <TestEntity > results = query .list ();
121+ final List <TestEntity > results = query .list ();
116122
117- assertThat ( results .size (), is ( 1 ) );
123+ assertThat ( results .size (), is ( 1 ) );
118124
119- final TestEntity testEntity = results .get ( 0 );
120- assertThat ( testEntity .getFirstLobField (), is ( value1 ) );
121- assertThat ( testEntity .getSecondLobField (), is ( value2 ) );
122- final Clob clobField = testEntity .getClobField ();
123- try {
125+ final TestEntity testEntity = results .get ( 0 );
126+ assertThat ( testEntity .getFirstLobField (), is ( value1 ) );
127+ assertThat ( testEntity .getSecondLobField (), is ( value2 ) );
128+ final Clob clobField = testEntity .getClobField ();
129+ try {
124130
125- assertThat ( clobField .getSubString ( 1 , (int ) clobField .length () ), is ( value3 ) );
126- }
127- catch (SQLException e ) {
128- fail ( e .getMessage () );
129- }
130- } );
131+ assertThat ( clobField .getSubString ( 1 , (int ) clobField .length () ), is ( value3 ) );
132+ }
133+ catch (SQLException e ) {
134+ fail ( e .getMessage () );
135+ }
136+ } );
131137 }
132138
133139 @ Entity (name = "TestEntity" )
0 commit comments