From c58e93829fb71a0102f991dc967af997f831c5d4 Mon Sep 17 00:00:00 2001 From: Rishabh Date: Sat, 1 Feb 2025 17:27:48 +0530 Subject: [PATCH 1/2] TRUNK-5906 : ConceptReferenceTerm Domain - Switching from Hibernate Mappings to Annotations --- .../org/openmrs/ConceptReferenceTerm.java | 25 +++++++- api/src/main/resources/hibernate.cfg.xml | 1 - .../db/hibernate/ConceptReferenceTerm.hbm.xml | 62 ------------------- .../org/openmrs/api/OrderServiceTest.java | 1 + 4 files changed, 25 insertions(+), 64 deletions(-) delete mode 100644 api/src/main/resources/org/openmrs/api/db/hibernate/ConceptReferenceTerm.hbm.xml diff --git a/api/src/main/java/org/openmrs/ConceptReferenceTerm.java b/api/src/main/java/org/openmrs/ConceptReferenceTerm.java index 4959bfd4209a..191c550733fe 100644 --- a/api/src/main/java/org/openmrs/ConceptReferenceTerm.java +++ b/api/src/main/java/org/openmrs/ConceptReferenceTerm.java @@ -11,11 +11,20 @@ import java.util.LinkedHashSet; import java.util.Set; - +import javax.persistence.Entity; import org.hibernate.envers.Audited; import org.hibernate.search.annotations.Analyze; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; +import javax.persistence.Table; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Id; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import javax.persistence.OneToMany; /** * A concept reference term is typically name for a concept by which it is referred in another @@ -25,21 +34,35 @@ * @since 1.9 */ @Audited +@Entity +@Table(name = "concept_reference_term") public class ConceptReferenceTerm extends BaseChangeableOpenmrsMetadata { private static final long serialVersionUID = 1L; @DocumentId + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + @GenericGenerator( + name = "concept_reference_term_id_seq", + strategy = "native", + parameters = @Parameter(name = "sequence", value = "concept_reference_term_concept_reference_term_id_seq") + ) + @Column(name = "concept_reference_term_id") private Integer conceptReferenceTermId; + @Column(name = "concept_source_id", nullable = false) private ConceptSource conceptSource; //The unique code used to identify the reference term in it's reference terminology @Field(analyze = Analyze.NO) + @Column(name = "code", length = 255, nullable = false) private String code; + @Column(name = "version", length = 50) private String version; + @OneToMany(mappedBy = "conceptReferenceTerm" ,cascade = CascadeType.ALL, orphanRemoval = true) private Set conceptReferenceTermMaps; /** default constructor */ diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index 1cad8cc6aa43..ad9589de0629 100644 --- a/api/src/main/resources/hibernate.cfg.xml +++ b/api/src/main/resources/hibernate.cfg.xml @@ -38,7 +38,6 @@ - diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/ConceptReferenceTerm.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/ConceptReferenceTerm.hbm.xml deleted file mode 100644 index 064ccd28e4f4..000000000000 --- a/api/src/main/resources/org/openmrs/api/db/hibernate/ConceptReferenceTerm.hbm.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - concept_reference_term_concept_reference_term_id_seq - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java index 12f636a67082..93878baa19f6 100644 --- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java +++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java @@ -2742,6 +2742,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th .addAnnotatedClass(ProgramAttributeType.class) .addAnnotatedClass(HL7InError.class) .addAnnotatedClass(OrderType.class) + .addAnnotatedClass(ConceptReferenceTerm.class) .getMetadataBuilder().build(); From fbdef142bda7c3715ed2dbe1f3a038098c040fb5 Mon Sep 17 00:00:00 2001 From: Rishabh Date: Thu, 13 Feb 2025 19:53:42 +0530 Subject: [PATCH 2/2] Update ConceptReferenceTerm.java --- .../main/java/org/openmrs/ConceptReferenceTerm.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/org/openmrs/ConceptReferenceTerm.java b/api/src/main/java/org/openmrs/ConceptReferenceTerm.java index 191c550733fe..1ebb90b1bfc2 100644 --- a/api/src/main/java/org/openmrs/ConceptReferenceTerm.java +++ b/api/src/main/java/org/openmrs/ConceptReferenceTerm.java @@ -25,6 +25,9 @@ import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import javax.persistence.OneToMany; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import java.util.HashSet; /** * A concept reference term is typically name for a concept by which it is referred in another @@ -42,7 +45,7 @@ public class ConceptReferenceTerm extends BaseChangeableOpenmrsMetadata { @DocumentId @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "concept_reference_term_id_seq") @GenericGenerator( name = "concept_reference_term_id_seq", strategy = "native", @@ -51,7 +54,8 @@ public class ConceptReferenceTerm extends BaseChangeableOpenmrsMetadata { @Column(name = "concept_reference_term_id") private Integer conceptReferenceTermId; - @Column(name = "concept_source_id", nullable = false) + @ManyToOne + @JoinColumn(name = "concept_source_id", nullable = false) private ConceptSource conceptSource; //The unique code used to identify the reference term in it's reference terminology @@ -62,8 +66,8 @@ public class ConceptReferenceTerm extends BaseChangeableOpenmrsMetadata { @Column(name = "version", length = 50) private String version; - @OneToMany(mappedBy = "conceptReferenceTerm" ,cascade = CascadeType.ALL, orphanRemoval = true) - private Set conceptReferenceTermMaps; + @OneToMany(mappedBy = "termA", cascade = CascadeType.ALL, orphanRemoval = true) + private Set conceptReferenceTermMaps = new HashSet<>(); /** default constructor */ public ConceptReferenceTerm() {