Skip to content

Commit 33fb338

Browse files
committed
[#1533] Hack for the generation of the insert query with MSSQL
1 parent 8a08708 commit 33fb338

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/id/insert/ReactiveAbstractReturningDelegate.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import org.hibernate.dialect.Dialect;
1212
import org.hibernate.dialect.PostgreSQLDialect;
13+
import org.hibernate.dialect.SQLServerDialect;
1314
import org.hibernate.engine.jdbc.mutation.JdbcValueBindings;
1415
import org.hibernate.engine.jdbc.mutation.group.PreparedStatementDetails;
1516
import org.hibernate.engine.jdbc.spi.JdbcServices;
@@ -54,6 +55,23 @@ private static String createInsert(PreparedStatementDetails insertStatementDetai
5455
if ( instanceOf( dialect, PostgreSQLDialect.class ) ) {
5556
return insertStatementDetails.getSqlString() + " returning " + identifierColumnName;
5657
}
58+
if ( instanceOf( dialect, SQLServerDialect.class ) ) {
59+
String sql = insertStatementDetails.getSqlString();
60+
int index = sql.lastIndexOf( " returning " + identifierColumnName );
61+
// FIXME: this is a hack for HHH-16365
62+
if ( index > -1 ) {
63+
sql = sql.substring( 0, index );
64+
}
65+
if ( sql.endsWith( "default values" ) ) {
66+
index = sql.indexOf( "default values" );
67+
sql = sql.substring( 0, index );
68+
sql = sql + "output inserted." + identifierColumnName + " default values";
69+
}
70+
else {
71+
sql = sql.replace( ") values (", ") output inserted." + identifierColumnName + " values (" );
72+
}
73+
return sql;
74+
}
5775
return insertStatementDetails.getSqlString();
5876
}
5977

0 commit comments

Comments
 (0)