Hola estaba usando criteria de hibernate pero la verdad aunke dispongo
de un manual que parece bastante bueno no se utilizarlo del todo.
Tenia el siguiente codigo

public List customerList(Customer exampleInstance,CollectionCustomer
exampleCollectionCustomer) {

                Example example =
Example.create(exampleInstance).ignoreCase().ignoreCase().enableLike(MatchMode.START);
                Criteria crit = getSession().createCriteria(Customer.class);

                
if(((DocumentType)exampleInstance.getDocumentType()).getId()!=null){
                         crit.add(Restrictions.eq("documentType.id",
((DocumentType)exampleInstance.getDocumentType()).getId()));
                }
                String apellido= exampleInstance.getCustomerSurname() ;
                if (apellido!= null){
//AQUI ES DONDE FALLA
                        crit.add(Restrictions.sqlRestriction("upper
(translate(customerSurname.Name, 'áéíóúÁÉÍÓÚ', 'aeiouAEIOU')) LIKE
UPPER(translate(?, 'áéíóúÁÉÍÓÚ', 'aeiouAEIOU'))", apellido,
(org.hibernate.type.Type) Type.String));

                        if(apellido.compareTo(("asd"))==0){
                                System.out.println("Apellido distinto de null");

                        }
                }

                if(exampleCollectionCustomer.getCardNumber()!=null && !
exampleCollectionCustomer.getCardNumber().equals("")){
                        Example exampleCollCust =
Example.create(exampleCollectionCustomer);
                        Criteria critcollCust =
getSession().createCriteria(CollectionCustomer.class);
                        critcollCust.add(exampleCollCust);
                        List<CollectionCustomer> collections = 
critcollCust.list();
                        List<String> listIdCustomers = new ArrayList<String>();
                        for(CollectionCustomer c:collections){
                                
listIdCustomers.add(c.getCustomer().getIdCustomer());
                        }
                        crit.add(Restrictions.in("idCustomer",listIdCustomers));
                }

                crit.add(example);
                return crit.list();
        }

Queria hacer una consulta por medio de criteria (donde pone aqui es
donde falla) en la que no tenga en  cuenta las tildes pero no se como
ponerla.se que la consulta en HSQL que tendria q hacer es la siguiente
pero en vez de Díaz por el nombre que introduzca
Select c.id from Customer c where upper
(translate(c.customerSurname,'áéíóúÁÉÍÓÚ', 'aeiouAEIOU')) LIKE
UPPER(translate('%Díaz', 'áéíóúÁÉÍÓÚ', 'aeiouAEIOU'))

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a