ORMLite – Consulta de campo externo

Utilizando ORMLite para Android, necesito crear una consulta que devuelva pedidos por orden de identificación o por nombre de cliente. Tenga en cuenta las siguientes declaraciones de clase:

@DatabaseTable(tableName = "order") public class Order { @DatabaseField(generatedId = true) private Long id; @DatabaseField(foreign = true, canBeNull = false, foreignAutoRefresh = true, columnName = "customer_id") private Customer customer; // default constructor, getters and setters... } @DatabaseTable(tableName = "customer") public class Customer { @DatabaseField(generatedId = true) private Long id; @DatabaseField private String name; // default constructor, getters and setters... } 

El SQL en bruto que estoy buscando sería algo como esto:

 SELECT o.* FROM order o JOIN customer c on o.customer_id = c.id WHERE (o.id = ?) OR (c.name = ?) 

¿Cuál es la mejor manera de hacer esto usando ORMLite?

ORMLite ahora admite consultas de unión sencillas .

Así que su consulta sería algo así como:

 QueryBuilder<Customer, Integer> customerQb = customerDao.queryBuilder(); SelectArg nameSelectArg = new SelectArg(); // this gives the c.name = ? customerQb.where().eq("name", nameSelectArg); QueryBuilder<Account, Integer> orderQb = orderDao.queryBuilder(); SelectArg idSelectArg = new SelectArg(); // this gives the o.id = ? orderQb.where().eq("id", idSelectArg); orderQb.join(customerQb); // then you set the args and run the query nameSelectArg.setValue("jim"); idSelectArg.setValue(1); List<Order> results = orderQb.join(customerQb).query(); 

No, los complementos son compatibles en ORMLite https://stackoverflow.com/a/7320091/323128 Sin embargo, esta referencia le dará una visión de cómo completar su tarea

  • Robolectric: Pruebas con ormlite
  • Cómo generar una consulta con la selección por valor del campo del objeto extraño
  • Eliminación automática de objetos anidados en ORMLite
  • Problemas al guardar la colección mediante ORMLite en Android
  • Uso de Ormlite en combinación con el proveedor de contenido de Android
  • Colecciones en ORMLite
  • CREOOrUpdate de ORMLite parece lento - ¿cuál es la velocidad normal?
  • Java.sql.SQLException: No se puede ejecutar insert stmt en objeto
  • Objeto de almacenamiento Robospice que extiende ArrayList en la base de datos a través de Ormlite
  • Android ORMLite. LEFT unirse. Dónde cláusula
  • Relación uno-a-muchos en ORMLite Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.