diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java index 25532852f..b8e82ed7e 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/Criterion.java @@ -23,6 +23,12 @@ public class Criterion extends BaseEntity implements ICriterion { private boolean active = true; + /* + * Just for Hibernate mapping in order to have an unique constraint with + * name and type properties. + */ + private Long typeId; + public static Criterion ofType(CriterionType type) { return new Criterion(type); } diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionServiceImpl.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionServiceImpl.java index 302b6f91d..aadbf9830 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionServiceImpl.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/services/CriterionServiceImpl.java @@ -6,7 +6,6 @@ import java.util.Date; import java.util.List; import org.apache.commons.lang.Validate; -import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.daos.CriterionDAO; @@ -79,16 +78,6 @@ public class CriterionServiceImpl implements ICriterionService { } criterionDAO.save(entity); - if (criterionDAO.findByNameAndType(entity).size() > 1) { - - InvalidValue[] invalidValues = { - new InvalidValue(entity.getName() + " already exists", - Criterion.class, "name", entity.getName(), entity) - }; - - throw new ValidationException(invalidValues, - "Couldn't save new criterion"); - } } private CriterionType saveCriterionType(CriterionType criterionType) throws ValidationException { diff --git a/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml b/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml index bd396599d..6c31907fc 100644 --- a/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml +++ b/navalplanner-business/src/main/resources/org/navalplanner/business/resources/entities/Resources.hbm.xml @@ -36,6 +36,13 @@ + + + + + + diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java index 8eb333345..22284ebf0 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/services/CriterionServiceTest.java @@ -114,7 +114,7 @@ public class CriterionServiceTest { criterionService.save(criterion); } - @Test(expected=ValidationException.class) + @Test(expected = DataIntegrityViolationException.class) @NotTransactional public void testCannotExistTwoDifferentCriterionsWithSameNameAndType() throws ValidationException { String unique = UUID.randomUUID().toString();