private List<String> validateSimpleUniqueConstraintsDefinedOnFields(Identifiable<?> entity) { Class<?> entityClass = getClassWithoutInitializingProxy(entity); List<String> errors = newArrayList(); for (Field field : entityClass.getFields()) { Column column = field.getAnnotation(Column.class); if (column != null && column.unique()) { Map<String, Object> values = newHashMap(); values.put(field.getName(), jpaUtil.getValueFromField(field, entity)); if (existsInDatabaseOnAllObjects(entity, values)) { errors.add(simpleUniqueConstraintError(entity, field.getName())); } } } return errors; }
private Map<String, Object> getPropertyConstraints( Object entity, Class<?> entityClass, UniqueConstraint u, String prefix) { Map<String, Object> values = newHashMap(); for (String column : u.columnNames()) { Method method = columnNameToMethod(entityClass, column); if (method != null) { values.put(prefix + jpaUtil.methodToProperty(method), invokeMethod(method, entity)); } else { Field field = columnNameToField(entityClass, column); if (field != null) { values.put(prefix + field.getName(), jpaUtil.getValueFromField(field, entity)); } } } return values; }