Skip to content

Commit f6da195

Browse files
committed
HHH-19300 cleanups
1 parent e49d173 commit f6da195

File tree

7 files changed

+97
-101
lines changed

7 files changed

+97
-101
lines changed

hibernate-core/src/main/java/org/hibernate/dialect/DB2Dialect.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
5050
import org.hibernate.engine.spi.SessionFactoryImplementor;
5151
import org.hibernate.exception.ConstraintViolationException;
52+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
5253
import org.hibernate.exception.LockTimeoutException;
5354
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
5455
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
@@ -1139,22 +1140,24 @@ public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor() {
11391140

11401141
@Override
11411142
public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
1142-
return (sqlException, message, sql) -> switch ( extractErrorCode( sqlException ) ) {
1143-
case -952 -> new LockTimeoutException( message, sqlException, sql );
1144-
case -803 -> new ConstraintViolationException( message, sqlException, sql,
1145-
ConstraintViolationException.ConstraintKind.UNIQUE,
1146-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1147-
case -530,-531 -> new ConstraintViolationException( message, sqlException, sql,
1148-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
1149-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1150-
case -407 -> new ConstraintViolationException( message, sqlException, sql,
1151-
ConstraintViolationException.ConstraintKind.NOT_NULL,
1152-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1153-
case -543,-545 -> new ConstraintViolationException( message, sqlException, sql,
1154-
ConstraintViolationException.ConstraintKind.CHECK,
1155-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1156-
default -> null;
1157-
};
1143+
return (sqlException, message, sql) ->
1144+
switch ( extractErrorCode( sqlException ) ) {
1145+
case -952 ->
1146+
new LockTimeoutException( message, sqlException, sql );
1147+
case -803 ->
1148+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
1149+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1150+
case -530,-531 ->
1151+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
1152+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1153+
case -407 ->
1154+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
1155+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1156+
case -543,-545 ->
1157+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
1158+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
1159+
default -> null;
1160+
};
11581161
}
11591162

11601163
@Override

hibernate-core/src/main/java/org/hibernate/dialect/H2Dialect.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -805,28 +805,28 @@ public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor() {
805805
public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
806806
return (sqlException, message, sql) ->
807807
switch ( extractErrorCode( sqlException ) ) {
808-
case 23505 ->
809-
// Unique index or primary key violation
810-
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
811-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
812808
case 40001 ->
813809
// DEADLOCK DETECTED
814810
new LockAcquisitionException(message, sqlException, sql);
815811
case 50200 ->
816812
// LOCK NOT AVAILABLE
817813
new PessimisticLockException(message, sqlException, sql);
814+
case 23505 ->
815+
// Unique index or primary key violation
816+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
817+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
818818
case 23502 ->
819819
// NULL not allowed for column
820820
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
821-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
821+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
822822
case 23503, 23506 ->
823823
// Referential integrity constraint violation
824824
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
825-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
825+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
826826
case 23513, 23514 ->
827827
// Check constraint violation
828828
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
829-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
829+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
830830
case 57014 ->
831831
new QueryTimeoutException( message, sqlException, sql );
832832
default -> null;

hibernate-core/src/main/java/org/hibernate/dialect/HSQLDialect.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
2929
import org.hibernate.engine.spi.SessionFactoryImplementor;
3030
import org.hibernate.exception.ConstraintViolationException;
31+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
3132
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
3233
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
3334
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
@@ -463,24 +464,20 @@ public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
463464
switch ( extractErrorCode( sqlException ) ) {
464465
case -10 ->
465466
// Not null constraint violation
466-
new ConstraintViolationException( message, sqlException, sql,
467-
ConstraintViolationException.ConstraintKind.NOT_NULL,
468-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
467+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
468+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
469469
case -104 ->
470470
// Unique constraint violation
471-
new ConstraintViolationException( message, sqlException, sql,
472-
ConstraintViolationException.ConstraintKind.UNIQUE,
473-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
471+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
472+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
474473
case -157 ->
475474
// Check constraint violation
476-
new ConstraintViolationException( message, sqlException, sql,
477-
ConstraintViolationException.ConstraintKind.CHECK,
478-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
475+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
476+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
479477
case -177 ->
480478
// Foreign key constraint violation
481-
new ConstraintViolationException( message, sqlException, sql,
482-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
483-
getViolatedConstraintNameExtractor().extractConstraintName(sqlException) );
479+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
480+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
484481
default -> null;
485482
};
486483
}

hibernate-core/src/main/java/org/hibernate/dialect/MariaDBDialect.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
2626
import org.hibernate.engine.spi.SessionFactoryImplementor;
2727
import org.hibernate.exception.ConstraintViolationException;
28+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
2829
import org.hibernate.exception.LockAcquisitionException;
2930
import org.hibernate.exception.LockTimeoutException;
3031
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
@@ -364,24 +365,19 @@ public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
364365
return new LockAcquisitionException( message, sqlException, sql );
365366
case 1062:
366367
// Unique constraint violation
367-
return new ConstraintViolationException( message, sqlException, sql,
368-
ConstraintViolationException.ConstraintKind.UNIQUE,
369-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException )
370-
);
368+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
369+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
371370
case 1048:
372371
// Null constraint violation
373-
return new ConstraintViolationException( message, sqlException, sql,
374-
ConstraintViolationException.ConstraintKind.NOT_NULL,
372+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
375373
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
376374
case 1451, 1452:
377375
// Foreign key constraint violation
378-
return new ConstraintViolationException( message, sqlException, sql,
379-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
376+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
380377
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
381378
case 3819, 4025: // 4025 seems to usually be a check constraint violation
382379
// Check constraint violation
383-
return new ConstraintViolationException( message, sqlException, sql,
384-
ConstraintViolationException.ConstraintKind.CHECK,
380+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
385381
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
386382
}
387383

hibernate-core/src/main/java/org/hibernate/dialect/MySQLDialect.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
4343
import org.hibernate.engine.spi.SessionFactoryImplementor;
4444
import org.hibernate.exception.ConstraintViolationException;
45+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
4546
import org.hibernate.exception.LockAcquisitionException;
4647
import org.hibernate.exception.LockTimeoutException;
4748
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
@@ -1250,23 +1251,19 @@ public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
12501251
return new LockAcquisitionException( message, sqlException, sql );
12511252
case 1062:
12521253
// Unique constraint violation
1253-
return new ConstraintViolationException( message, sqlException, sql,
1254-
ConstraintViolationException.ConstraintKind.UNIQUE,
1254+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
12551255
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
12561256
case 1048:
12571257
// Null constraint violation
1258-
return new ConstraintViolationException( message, sqlException, sql,
1259-
ConstraintViolationException.ConstraintKind.NOT_NULL,
1258+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
12601259
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
12611260
case 1451, 1452:
12621261
// Foreign key constraint violation
1263-
return new ConstraintViolationException( message, sqlException, sql,
1264-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
1262+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
12651263
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
12661264
case 3819:
12671265
// Check constraint violation
1268-
return new ConstraintViolationException( message, sqlException, sql,
1269-
ConstraintViolationException.ConstraintKind.CHECK,
1266+
return new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
12701267
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
12711268
}
12721269

hibernate-core/src/main/java/org/hibernate/dialect/SQLServerDialect.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
5050
import org.hibernate.engine.spi.SessionFactoryImplementor;
5151
import org.hibernate.exception.ConstraintViolationException;
52+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
5253
import org.hibernate.exception.LockTimeoutException;
5354
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
5455
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
@@ -825,22 +826,21 @@ public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
825826
}
826827

827828
return switch ( extractErrorCode( sqlException ) ) {
828-
case 1222 -> new LockTimeoutException( message, sqlException, sql );
829-
case 2627, 2601 -> new ConstraintViolationException( message, sqlException, sql,
830-
ConstraintViolationException.ConstraintKind.UNIQUE,
831-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
832-
case 515 -> new ConstraintViolationException( message, sqlException, sql,
833-
ConstraintViolationException.ConstraintKind.NOT_NULL,
834-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
829+
case 1222 ->
830+
new LockTimeoutException( message, sqlException, sql );
831+
case 2627, 2601 ->
832+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
833+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
834+
case 515 ->
835+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
836+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
835837
case 547 -> {
836838
if ( message.contains( " CHECK " ) ) {
837-
yield new ConstraintViolationException( message, sqlException, sql,
838-
ConstraintViolationException.ConstraintKind.CHECK,
839+
yield new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
839840
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
840841
}
841842
else if ( message.contains( " FOREIGN KEY " ) ) {
842-
yield new ConstraintViolationException( message, sqlException, sql,
843-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
843+
yield new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
844844
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
845845
}
846846
else {

hibernate-core/src/main/java/org/hibernate/dialect/SybaseASEDialect.java

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
2525
import org.hibernate.engine.spi.SessionFactoryImplementor;
2626
import org.hibernate.exception.ConstraintViolationException;
27+
import org.hibernate.exception.ConstraintViolationException.ConstraintKind;
2728
import org.hibernate.exception.LockTimeoutException;
2829
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
2930
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
@@ -696,53 +697,55 @@ public ViolatedConstraintNameExtractor getViolatedConstraintNameExtractor() {
696697
public SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate() {
697698
return (sqlException, message, sql) -> {
698699
final String sqlState = extractSqlState( sqlException );
699-
final int errorCode = extractErrorCode( sqlException );
700700
if ( sqlState != null ) {
701-
switch ( sqlState ) {
702-
case "HY008":
703-
return new QueryTimeoutException( message, sqlException, sql );
704-
case "JZ0TO":
705-
case "JZ006":
706-
return new LockTimeoutException( message, sqlException, sql );
707-
case "S1000":
708-
case "23000":
709-
switch ( errorCode ) {
710-
case 515, 233:
711-
// Attempt to insert NULL value into column; column does not allow nulls.
712-
return new ConstraintViolationException( message, sqlException, sql,
713-
ConstraintViolationException.ConstraintKind.NOT_NULL,
714-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
715-
case 546:
716-
// Foreign key violation
717-
return new ConstraintViolationException( message, sqlException, sql,
718-
ConstraintViolationException.ConstraintKind.FOREIGN_KEY,
719-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
720-
case 548:
721-
// Check constraint violation
722-
return new ConstraintViolationException( message, sqlException, sql,
723-
ConstraintViolationException.ConstraintKind.CHECK,
724-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
725-
case 2601:
726-
// Unique constraint violation
727-
return new ConstraintViolationException( message, sqlException, sql,
728-
ConstraintViolationException.ConstraintKind.UNIQUE,
729-
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
730-
}
731-
break;
732-
case "ZZZZZ":
701+
final int errorCode = extractErrorCode( sqlException );
702+
return switch ( sqlState ) {
703+
case "HY008" ->
704+
new QueryTimeoutException( message, sqlException, sql );
705+
case "JZ0TO", "JZ006" ->
706+
new LockTimeoutException( message, sqlException, sql );
707+
case "S1000", "23000" ->
708+
convertConstraintViolation( sqlException, message, sql, errorCode );
709+
case "ZZZZZ" -> {
733710
if ( 515 == errorCode ) {
734711
// Attempt to insert NULL value into column; column does not allow nulls.
735-
return new ConstraintViolationException( message, sqlException, sql,
736-
ConstraintViolationException.ConstraintKind.NOT_NULL,
712+
yield new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
737713
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
738714
}
739-
break;
740-
}
715+
else {
716+
yield null;
717+
}
718+
}
719+
default -> null;
720+
};
741721
}
742722
return null;
743723
};
744724
}
745725

726+
private ConstraintViolationException convertConstraintViolation(
727+
SQLException sqlException, String message, String sql, int errorCode) {
728+
return switch ( errorCode ) {
729+
case 515, 233 ->
730+
// Attempt to insert NULL value into column; column does not allow nulls.
731+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.NOT_NULL,
732+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
733+
case 546 ->
734+
// Foreign key violation
735+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.FOREIGN_KEY,
736+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
737+
case 548 ->
738+
// Check constraint violation
739+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.CHECK,
740+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
741+
case 2601 ->
742+
// Unique constraint violation
743+
new ConstraintViolationException( message, sqlException, sql, ConstraintKind.UNIQUE,
744+
getViolatedConstraintNameExtractor().extractConstraintName( sqlException ) );
745+
default -> null;
746+
};
747+
}
748+
746749
@Override
747750
public LimitHandler getLimitHandler() {
748751
return new TopLimitHandler(false);

0 commit comments

Comments
 (0)