2012-04-23 5 views
5

Deseo ordenar mis objetos de datos de una caja DAO ORMLite insensiblemente.Insensible a las mayúsculas y miniaturas con ormlite y sqlite en android

Actualmente estoy usando el siguiente código de SQLite para ordenar mi caso elementos propietario sensibilidad:

ownerDao.queryBuilder().orderBy("Name", true).query(); 

veo here que SQLite apoya entre mayúsculas y minúsculas "ordenar por" con el siguiente código SQL en bruto:

SELECT * FROM owner ORDER BY Name COLLATE NOCASE 

Cualquier forma fácil (más fácil que llamar al queryRaw()) de agregar el sufijo deseado?

¿Podría una solución alternativa establecer la propiedad columnDefinition en DatabaseField annotation en TEXT COLLATE NOCASE?

+0

has intentado 'orderBy (" Nombre COLLATE NOCASE ", verdadero)' tal vez pase por ese camino. – zapl

+1

Pensé en eso, pero incluso si eso funciona, podría romperse con alguna versión futura de ORMLite. – Diederik

Respuesta

16

Creo que lo que quiere es usar el QueryBuilder.orderByRaw(String) method. Se vería algo como:

ownerDao.queryBuilder().orderByRaw("Name COLLATE NOCASE").query(); 

Aviso de la cadena de texto en sí no contienen la parte ORDER BY de la cadena. Para citar el javadocs:

Agregue la cláusula "ORDER BY" de SQL sin formato a la instrucción de consulta SQL. Esto no debe incluir el "ORDEN POR".

El TEXT COLLATE NOCASEcolumnDefinition podría funcionar, aunque no tengo ninguna experiencia con el uso de eso en absoluto.

Además, yo no utilizo la respuesta orderBy("Name COLLATE NOCASE", true) ya que típicamente ORMLite trata de escapar de los nombres de las columnas y de las cotizaciones estaría en el lugar equivocado.

+0

orderByRaw ("Name COLLATE NOCASE") funciona como se esperaba. Gracias Gray – Diederik

Cuestiones relacionadas