Skip to content

Instantly share code, notes, and snippets.

@davicfg
Created September 12, 2020 13:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davicfg/93dfb7131df10ae04cab105b880a489c to your computer and use it in GitHub Desktop.
Save davicfg/93dfb7131df10ae04cab105b880a489c to your computer and use it in GitHub Desktop.
package br.com.deveficiente.casadocodigo.compartilhado;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.springframework.util.Assert;
public class UniqueValueValidator implements ConstraintValidator<UniqueValue, Object> {
private String domainAttribute;
private Class<?> klass;
@PersistenceContext
private EntityManager manager;
@Override
public void initialize(UniqueValue params) {
domainAttribute = params.fieldName();
klass = params.domainClass();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
Query query = manager.createQuery("select 1 from " + klass.getName() + " where " + domainAttribute + "=:value");
query.setParameter("value", value);
List<?> list = query.getResultList();
Assert.state(list.size() <= 1, "Foi encontrado mais de um " + klass + " com o atributo " + "=" + value);
return list.isEmpty();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment