diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/IdGeneration.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/IdGeneration.java
index 3b61ca25c6..30cf7132fb 100644
--- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/IdGeneration.java
+++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/IdGeneration.java
@@ -18,6 +18,8 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
+import org.springframework.data.relational.core.sql.SqlIdentifier;
+
/**
* Describes how obtaining generated ids after an insert works for a given JDBC driver.
*
@@ -45,6 +47,18 @@ default boolean driverRequiresKeyColumnNames() {
return false;
}
+ /**
+ * Provides for a given id {@link SqlIdentifier} the String that is to be used for registering interest in the
+ * generated value of that column.
+ *
+ * @param id {@link SqlIdentifier} representing a column for which a generated value is to be obtained.
+ * @return a String representing that column in the way expected by the JDBC driver.
+ * @since 3.3
+ */
+ default String getKeyColumnName(SqlIdentifier id) {
+ return id.getReference();
+ }
+
/**
* Does the driver support id generation for batch operations.
*
diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/OracleDialect.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/OracleDialect.java
index 86af12137a..66b42eccab 100644
--- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/OracleDialect.java
+++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/dialect/OracleDialect.java
@@ -17,6 +17,7 @@
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.WritingConverter;
+import org.springframework.data.relational.core.sql.SqlIdentifier;
import java.util.Collection;
@@ -40,6 +41,11 @@ public class OracleDialect extends AnsiDialect {
public boolean driverRequiresKeyColumnNames() {
return true;
}
+
+ @Override
+ public String getKeyColumnName(SqlIdentifier id) {
+ return id.toSql(INSTANCE.getIdentifierProcessing());
+ }
};
protected OracleDialect() {}