diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/FinalizeDatasetPublicationCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/FinalizeDatasetPublicationCommand.java index d4bc6b83613..1ef68ae4853 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/FinalizeDatasetPublicationCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/FinalizeDatasetPublicationCommand.java @@ -334,12 +334,16 @@ private void updateParentDataversesSubjectsField(Dataset savedDataset, CommandCo while (dv != null) { boolean newSubjectsAdded = false; for (ControlledVocabularyValue cvv : dsf.getControlledVocabularyValues()) { - if (!dv.getDataverseSubjects().contains(cvv)) { - logger.fine("dv "+dv.getAlias()+" does not have subject "+cvv.getStrValue()); - newSubjectsAdded = true; - dv.getDataverseSubjects().add(cvv); + if (!cvv.getStrValue().equals(DatasetField.NA_VALUE)) { + if (!dv.getDataverseSubjects().contains(cvv)) { + logger.fine("dv "+dv.getAlias()+" does not have subject "+cvv.getStrValue()); + newSubjectsAdded = true; + dv.getDataverseSubjects().add(cvv); + } else { + logger.fine("dv "+dv.getAlias()+" already has subject "+cvv.getStrValue()); + } } else { - logger.fine("dv "+dv.getAlias()+" already has subject "+cvv.getStrValue()); + logger.fine("Subject is not recognized : " + cvv.getStrValue()); } } if (newSubjectsAdded) { diff --git a/src/main/resources/db/migration/V6.7.1.2.sql b/src/main/resources/db/migration/V6.7.1.2.sql new file mode 100644 index 00000000000..3ef3c6483e8 --- /dev/null +++ b/src/main/resources/db/migration/V6.7.1.2.sql @@ -0,0 +1,2 @@ +-- remove dataversesubjects entries with a controlledvocabularyvalue_id matching "N/A" +DELETE FROM dataversesubjects WHERE controlledvocabularyvalue_id = 1 ; \ No newline at end of file