diff --git a/extension/persistence/jpa-model/build.gradle.kts b/extension/persistence/jpa-model/build.gradle.kts
index 0bc5af7bee..ab782fd79d 100644
--- a/extension/persistence/jpa-model/build.gradle.kts
+++ b/extension/persistence/jpa-model/build.gradle.kts
@@ -24,6 +24,8 @@ plugins {
dependencies {
implementation(project(":polaris-core"))
+ implementation(libs.eclipselink)
+
compileOnly(libs.jakarta.validation.api)
compileOnly(libs.jakarta.annotation.api)
compileOnly(libs.jakarta.persistence.api)
diff --git a/extension/persistence/jpa-model/src/main/java/org/apache/polaris/jpa/models/ModelPolicyMappingRecord.java b/extension/persistence/jpa-model/src/main/java/org/apache/polaris/jpa/models/ModelPolicyMappingRecord.java
index 122eeadb88..c779758430 100644
--- a/extension/persistence/jpa-model/src/main/java/org/apache/polaris/jpa/models/ModelPolicyMappingRecord.java
+++ b/extension/persistence/jpa-model/src/main/java/org/apache/polaris/jpa/models/ModelPolicyMappingRecord.java
@@ -18,12 +18,14 @@
*/
package org.apache.polaris.jpa.models;
+import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import org.apache.polaris.core.policy.PolarisPolicyMappingRecord;
+import org.eclipse.persistence.annotations.PrimaryKey;
@Entity
@Table(
@@ -33,6 +35,14 @@
name = "POLICY_MAPPING_RECORDS_BY_POLICY_INDEX",
columnList = "policyCatalogId,policyId,targetCatalogId,targetId")
})
+@PrimaryKey(
+ columns = {
+ @Column(name = "targetCatalogId"),
+ @Column(name = "targetId"),
+ @Column(name = "policyTypeCode"),
+ @Column(name = "policyCatalogId"),
+ @Column(name = "policyId")
+ })
public class ModelPolicyMappingRecord {
// id of the catalog where target entity resides
@Id private long targetCatalogId;
diff --git a/getting-started/assets/eclipselink/persistence.xml b/getting-started/assets/eclipselink/persistence.xml
index 54fb795a39..5ffd9d1b37 100644
--- a/getting-started/assets/eclipselink/persistence.xml
+++ b/getting-started/assets/eclipselink/persistence.xml
@@ -28,6 +28,7 @@
org.apache.polaris.jpa.models.ModelEntityChangeTracking
org.apache.polaris.jpa.models.ModelEntityDropped
org.apache.polaris.jpa.models.ModelGrantRecord
+ org.apache.polaris.jpa.models.ModelPolicyMappingRecord
org.apache.polaris.jpa.models.ModelPrincipalSecrets
org.apache.polaris.jpa.models.ModelSequenceId
NONE