Bueno, tu limitación para hacer esta consulta es debido a tu Base de Datos
mas no por NHibernate. Sin embargo tienes varias opciones para
solucionarlo:
1. Modificar el *collation* en tu campo de Base de Datos de manera que
sea *Accent Insensitive*
2. Realizar un Expression.Sql("CampoBDTexto like ? COLLATE
Latin1_General_CI_AI","TextoConTildes", NHibernateUtil.String). Tambien
puedes registrar esto como una funcion extendiendo del dialecto de tu Base
de Datos, esta ultima opcion no re cuerdo bien como se realiza pero podrias
buscar en internet.
Saludos,
Nestor Rodriguez
On Mon, Oct 4, 2010 at 9:17 AM, tikotiko <[email protected]>wrote:
> 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
--
Para escribir al Grupo, hágalo a esta dirección:
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano