diff --git a/src/main/java/com/eactive/apim/portal/portaluser/entity/PortalUserPrivacyAgreement.java b/src/main/java/com/eactive/apim/portal/portaluser/entity/PortalUserPrivacyAgreement.java index 01ef1ac..6745c87 100644 --- a/src/main/java/com/eactive/apim/portal/portaluser/entity/PortalUserPrivacyAgreement.java +++ b/src/main/java/com/eactive/apim/portal/portaluser/entity/PortalUserPrivacyAgreement.java @@ -5,6 +5,7 @@ import com.eactive.eai.data.converter.LocalDateTimeToStringConverter14; import lombok.Data; import lombok.EqualsAndHashCode; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.io.Serializable; @@ -18,7 +19,20 @@ public class PortalUserPrivacyAgreement extends Auditable implements Serializabl private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator( + name = "ptl_user_privacy_policy_agreement_gen", + strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator", + parameters = { + @org.hibernate.annotations.Parameter(name = "sequence_name", value = "PTL_USER_PRIVACY_POLICY_AGREEMENT_SEQ"), + @org.hibernate.annotations.Parameter(name = "initial_value", value = "1"), + @org.hibernate.annotations.Parameter(name = "increment_size", value = "1") + } + ) + @GeneratedValue( + strategy = GenerationType.SEQUENCE, + generator = "ptl_user_privacy_policy_agreement_gen" + ) @Column(name = "id", nullable = false) private Long id; diff --git a/src/main/java/com/eactive/apim/portal/portaluser/entity/UserPasswordHistory.java b/src/main/java/com/eactive/apim/portal/portaluser/entity/UserPasswordHistory.java index 00c9ead..d366fe8 100644 --- a/src/main/java/com/eactive/apim/portal/portaluser/entity/UserPasswordHistory.java +++ b/src/main/java/com/eactive/apim/portal/portaluser/entity/UserPasswordHistory.java @@ -3,6 +3,8 @@ package com.eactive.apim.portal.portaluser.entity; import com.eactive.eai.data.converter.LocalDateTimeToStringConverter14; import lombok.Data; import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Parameter; +import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; import java.io.Serializable; @@ -15,8 +17,21 @@ public class UserPasswordHistory implements Serializable, com.eactive.eai.data.D private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", columnDefinition = "bigint") + @GenericGenerator( + name = "ptl_user_password_history_seq_gen", + strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator", + parameters = { + @Parameter(name = "sequence_name", value = "PTL_USER_PASSWORD_HISTORY_SEQ"), + @Parameter(name = "initial_value", value = "1"), + @Parameter(name = "increment_size", value = "1") + } + ) + @GeneratedValue( + strategy = GenerationType.SEQUENCE, + generator = "ptl_user_password_history_seq_gen" + ) +// @Column(name = "id", columnDefinition = "bigint") + @Column(name = "id", columnDefinition = "number(19)") private Long id; @Column(name = "user_id", length = 35, nullable = false) diff --git a/src/main/java/com/eactive/eai/rms/data/PortalSchemaProviderHolder.java b/src/main/java/com/eactive/eai/rms/data/PortalSchemaProviderHolder.java new file mode 100644 index 0000000..d997a0f --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/PortalSchemaProviderHolder.java @@ -0,0 +1,16 @@ +package com.eactive.eai.rms.data; + +public class PortalSchemaProviderHolder { + private static SchemaProvider provider; + + public static void setProvider(SchemaProvider p) { + provider = p; + } + + public static String getSchema() { + if (provider == null) { + throw new IllegalStateException("SchemaProvider not initialized!"); + } + return provider.getSchema(); + } +} diff --git a/src/main/java/com/eactive/eai/rms/data/SchemaProvider.java b/src/main/java/com/eactive/eai/rms/data/SchemaProvider.java new file mode 100644 index 0000000..cb659d6 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/SchemaProvider.java @@ -0,0 +1,5 @@ +package com.eactive.eai.rms.data; + +public interface SchemaProvider { + String getSchema(); +} diff --git a/src/main/java/com/eactive/eai/rms/data/jpa/SchemaPrefixedSequenceGenerator.java b/src/main/java/com/eactive/eai/rms/data/jpa/SchemaPrefixedSequenceGenerator.java new file mode 100644 index 0000000..f52d053 --- /dev/null +++ b/src/main/java/com/eactive/eai/rms/data/jpa/SchemaPrefixedSequenceGenerator.java @@ -0,0 +1,24 @@ +package com.eactive.eai.rms.data.jpa; + +import com.eactive.eai.rms.data.PortalSchemaProviderHolder; +import org.hibernate.MappingException; +import org.hibernate.id.enhanced.SequenceStyleGenerator; +import org.hibernate.service.ServiceRegistry; +import org.hibernate.type.Type; + +import java.util.Properties; + +public class SchemaPrefixedSequenceGenerator extends SequenceStyleGenerator { + @Override + public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException { + + String raw = params.getProperty(SEQUENCE_PARAM); + + if (!raw.contains(".")) { + String schema = PortalSchemaProviderHolder.getSchema(); + params.setProperty(SEQUENCE_PARAM, schema + "." + raw); + } + + super.configure(type, params, serviceRegistry); + } +}