I'm trying execute a LIKE with ORMLite SQLite in Android. The problem is I need this Like execute from 2 entities and use or()
clause.
How could I do this ?
SQL
SELECT * FROM produto t1
INNER JOIN empresa t2 ON (produto.empresa_id = empresa.empresa_id)
WHERE t1.nome LIKE "value" OR t2.nome LIKE "value"
Entities
@DatabaseTable(tableName = "produto")
public class Produto{
@DatabaseField(generatedId = true)
private Integer produto_id;
@DatabaseField
private String nome;
@DatabaseField(foreign = true, foreignAutoCreate = true, foreignAutoRefresh = true)
private Empresa empresa;
//gets/sets
}
@DatabaseTable(tableName = "empresa")
public class Empresa{
@DatabaseField(generatedId = true)
private Integer empresa_id;
@DatabaseField
private String nome;
}
Statement
/** retorna uma lista por filtro de produtos */
public List<Produto> findByLike(String value){
List<Produto> lista = new ArrayList<Produto>();
try {
//empresa
QueryBuilder<Empresa, Integer> empQB = empresaLocalDAO.queryBuilder();
//produto
QueryBuilder<Produto, Integer> produtoQB = prodServLocalDAO.queryBuilder();
produtoQB.orderBy("nome", true);
Where where = produtoQB.where();
empQB.selectColumns("nome");
empQB.where().like("nome", "%" + value + "%");
produtoQB.join(empQB);
where.in("nome", empQB).or().like("nome", "%" + value + "%");
where.and();
where.eq("status", 1);
lista = produtoQB.query();
Log.i("STM->", produtoQB.prepareStatementString());
} catch (SQLException e) {
Log.e(TAG, e.getLocalizedMessage());
}
return lista;
}
Aucun commentaire:
Enregistrer un commentaire