/** * @see org.meveo.service.validation.ValidationServiceLocal#validateUniqueField(java.lang.String, * java.lang.String, java.lang.String, java.lang.Object) */ public boolean validateUniqueField( String className, String fieldName, Object id, Object value, Provider provider) { // Proxy classes contain a name in "..._$$_javassist.. format" If a proxy class object claname // was passed, string the ending "_$$_javassist.."to obtain real class name int pos = className.indexOf("_$$_java"); if (pos > 0) { className = className.substring(0, pos); } StringBuilder queryStringBuilder = new StringBuilder("select count(*) from ") .append(className) .append(" where ") .append(fieldName) .append(" = '") .append(value) .append("' and provider.id = ") .append(provider.getId()); if (id != null) { queryStringBuilder.append(" and id != ").append(id); } Query query = em.createQuery(queryStringBuilder.toString()); long count = (Long) query.getSingleResult(); return count == 0L; }