From 2e8c29d8d61cafc21d8d58fb5b2106461727c694 Mon Sep 17 00:00:00 2001 From: epuzanov Date: Tue, 30 Jan 2024 00:30:38 +0100 Subject: [PATCH] Update the NullUUIDGenerator generator --- .../src/main/java/ix/core/models/Edit.java | 10 +--------- .../src/main/java/ix/core/models/FileData.java | 5 +---- .../src/main/java/ix/core/models/Payload.java | 5 +---- .../src/main/java/ix/core/models/Session.java | 18 +++--------------- .../java/ix/ginas/models/GinasCommonData.java | 5 +---- .../models/generators/NullUUIDGenerator.java | 5 ++--- .../model/ImportProcessingJob.java | 4 +--- .../gsrs/stagingarea/model/ImportData.java | 10 ++-------- .../gsrs/stagingarea/model/ImportMetadata.java | 9 ++------- .../stagingarea/model/ImportValidation.java | 8 +------- .../stagingarea/model/KeyValueMapping.java | 9 +-------- .../gsrs/stagingarea/model/RawImportData.java | 5 +---- .../src/main/resources/gsrs-core.conf | 1 + .../test/resources/application-test.properties | 1 + 14 files changed, 19 insertions(+), 76 deletions(-) diff --git a/gsrs-core-entities/src/main/java/ix/core/models/Edit.java b/gsrs-core-entities/src/main/java/ix/core/models/Edit.java index eff20ac8..1a4dec74 100644 --- a/gsrs-core-entities/src/main/java/ix/core/models/Edit.java +++ b/gsrs-core-entities/src/main/java/ix/core/models/Edit.java @@ -51,17 +51,9 @@ public static Edit create(T before, T after){ @JsonIgnore @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false) - -// @JsonIgnore -// @Id -// @GeneratedValue public UUID id; // internal random id - //don't use @CreateDate annotation here just set it on creation time and mark it final public final Long created = TimeUtil.getCurrentTimeMillis(); diff --git a/gsrs-core-entities/src/main/java/ix/core/models/FileData.java b/gsrs-core-entities/src/main/java/ix/core/models/FileData.java index d871b77a..7482ef49 100644 --- a/gsrs-core-entities/src/main/java/ix/core/models/FileData.java +++ b/gsrs-core-entities/src/main/java/ix/core/models/FileData.java @@ -15,11 +15,8 @@ @DiscriminatorOptions(force = true) public class FileData extends BaseModel { @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false) public UUID id; // internal id public String mimeType; diff --git a/gsrs-core-entities/src/main/java/ix/core/models/Payload.java b/gsrs-core-entities/src/main/java/ix/core/models/Payload.java index fadd5dd4..d8a4fa66 100644 --- a/gsrs-core-entities/src/main/java/ix/core/models/Payload.java +++ b/gsrs-core-entities/src/main/java/ix/core/models/Payload.java @@ -19,11 +19,8 @@ @Indexable(indexed = false)//we don't want this indexed public class Payload extends BaseModel { @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false) public UUID id; @ManyToOne(cascade = CascadeType.PERSIST) diff --git a/gsrs-core-entities/src/main/java/ix/core/models/Session.java b/gsrs-core-entities/src/main/java/ix/core/models/Session.java index 537c299c..7a083d3d 100644 --- a/gsrs-core-entities/src/main/java/ix/core/models/Session.java +++ b/gsrs-core-entities/src/main/java/ix/core/models/Session.java @@ -14,23 +14,11 @@ @History(store=false) public class Session extends BaseModel { @Id - @GenericGenerator( - name = "NullUUIDGenerator", - strategy = "ix.ginas.models.generators.NullUUIDGenerator" - ) - @GeneratedValue( - generator = "NullUUIDGenerator" - ) - @Type( - type = "uuid-char" - ) - @Column( - length = 40, - updatable = false - ) + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) + @GeneratedValue(generator = "NullUUIDGenerator") public UUID id; - @OneToOne(cascade=CascadeType.ALL) + @ManyToOne(cascade=CascadeType.ALL) public UserProfile profile; public final long created = TimeUtil.getCurrentTimeMillis(); diff --git a/gsrs-core-entities/src/main/java/ix/ginas/models/GinasCommonData.java b/gsrs-core-entities/src/main/java/ix/ginas/models/GinasCommonData.java index 5803d2d7..ba330d9d 100644 --- a/gsrs-core-entities/src/main/java/ix/ginas/models/GinasCommonData.java +++ b/gsrs-core-entities/src/main/java/ix/ginas/models/GinasCommonData.java @@ -18,11 +18,8 @@ public class GinasCommonData extends NoIdGinasCommonData{ @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) public UUID uuid; @Indexable() public UUID getUuid() { diff --git a/gsrs-core-entities/src/main/java/ix/ginas/models/generators/NullUUIDGenerator.java b/gsrs-core-entities/src/main/java/ix/ginas/models/generators/NullUUIDGenerator.java index 5f800e48..3ab10f40 100644 --- a/gsrs-core-entities/src/main/java/ix/ginas/models/generators/NullUUIDGenerator.java +++ b/gsrs-core-entities/src/main/java/ix/ginas/models/generators/NullUUIDGenerator.java @@ -4,13 +4,12 @@ import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IdentifierGenerator; -import java.io.Serializable; import java.util.UUID; public class NullUUIDGenerator implements IdentifierGenerator { - public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException { - Serializable id = session.getEntityPersister(null, object).getIdentifier(object, session); + public Object generate(SharedSessionContractImplementor session, Object object) throws HibernateException { + Object id = session.getEntityPersister(null, object).getIdentifier(object, session); return id != null ? id : UUID.randomUUID(); } } diff --git a/gsrs-data-exchange/src/main/java/gsrs/dataexchange/model/ImportProcessingJob.java b/gsrs-data-exchange/src/main/java/gsrs/dataexchange/model/ImportProcessingJob.java index 69614e39..824b57c5 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/dataexchange/model/ImportProcessingJob.java +++ b/gsrs-data-exchange/src/main/java/gsrs/dataexchange/model/ImportProcessingJob.java @@ -23,10 +23,8 @@ public class ImportProcessingJob implements GeneralPurposeJob { @Id - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) private UUID id; - + @Lob private String data; diff --git a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportData.java b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportData.java index 99f18afb..9fb97925 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportData.java +++ b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportData.java @@ -37,11 +37,8 @@ public class ImportData { /** * Foreign key, referencing ImportMetadata */ - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = false) @Indexable(name="RecordId") private UUID recordId; @@ -49,11 +46,8 @@ public class ImportData { * Primary key */ @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) @Indexable(name="instanceId") private UUID instanceId; diff --git a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportMetadata.java b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportMetadata.java index 7a967f87..aa1e28e6 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportMetadata.java +++ b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportMetadata.java @@ -116,21 +116,16 @@ public enum RecordProcessStatus { indexed } - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) private UUID instanceId; //always unique! changes when data change /** * Primary key. value is assigned in code */ @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) //@OneToOne private UUID recordId; //stays the same for a given record diff --git a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportValidation.java b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportValidation.java index d828a3d6..c645ca3b 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportValidation.java +++ b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/ImportValidation.java @@ -43,9 +43,6 @@ public enum ImportValidationType { /** * foreign key to ImportData object */ - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = false) @Indexable private UUID instanceId; @@ -59,11 +56,8 @@ public enum ImportValidationType { * Unique, primary key */ @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) @Indexable private UUID ValidationId; diff --git a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/KeyValueMapping.java b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/KeyValueMapping.java index 84158588..8d1537c9 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/KeyValueMapping.java +++ b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/KeyValueMapping.java @@ -30,25 +30,18 @@ public class KeyValueMapping { * Primary key */ @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) private UUID mappingId; /** * Foreign key to ImportData */ - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = false) private UUID instanceId; /** * Foreign key to ImportMetadata */ - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = false) private UUID recordId; /** diff --git a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/RawImportData.java b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/RawImportData.java index cd80a9cc..d4b14392 100644 --- a/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/RawImportData.java +++ b/gsrs-data-exchange/src/main/java/gsrs/stagingarea/model/RawImportData.java @@ -14,11 +14,8 @@ @Data public class RawImportData { @Id - @GenericGenerator(name = "NullUUIDGenerator", strategy = "ix.ginas.models.generators.NullUUIDGenerator") + @GenericGenerator(name = "NullUUIDGenerator", type = ix.ginas.models.generators.NullUUIDGenerator.class) @GeneratedValue(generator = "NullUUIDGenerator") - //maintain backwards compatibility with old GSRS store it as varchar(40) by default hibernate will store uuids as binary - @Type(type = "uuid-char" ) - @Column(length =40, updatable = false, unique = true) private UUID recordId; @Lob diff --git a/gsrs-spring-boot-autoconfigure/src/main/resources/gsrs-core.conf b/gsrs-spring-boot-autoconfigure/src/main/resources/gsrs-core.conf index 0ebbfda9..e24b5eed 100644 --- a/gsrs-spring-boot-autoconfigure/src/main/resources/gsrs-core.conf +++ b/gsrs-spring-boot-autoconfigure/src/main/resources/gsrs-core.conf @@ -3,6 +3,7 @@ server.servlet.encoding.charset="UTF-8" server.servlet.encoding.force=true spring.jpa.properties.hibernate.entity_dirtiness_strategy=gsrs.GsrsEntityDirtinessStrategy +spring.jpa.properties.hibernate.type.preferred_uuid_jdbc_type=CHAR spring.jackson.serialization.fail-on-empty-beans=false spring.jackson.deserialization.fail-on-unknown-properties=false diff --git a/gsrs-spring-starter-tests/src/test/resources/application-test.properties b/gsrs-spring-starter-tests/src/test/resources/application-test.properties index 18d4058f..4f5e8251 100644 --- a/gsrs-spring-starter-tests/src/test/resources/application-test.properties +++ b/gsrs-spring-starter-tests/src/test/resources/application-test.properties @@ -4,6 +4,7 @@ spring.jackson.deserialization.fail-on-unknown-properties=false spring.jackson.serialization.fail-on-empty-beans=false spring.jpa.properties.hibernate.entity_dirtiness_strategy=gsrs.GsrsEntityDirtinessStrategy +spring.jpa.properties.hibernate.type.preferred_uuid_jdbc_type=CHAR gsrs.exchange="test_exchange"