mercredi 6 avril 2016

Android sqllite, querying an object that is a property of another object

How do I query an object that has another object as a property? I need to get the values of the property as well. Here's my model:

public class Department {
 public int DeptId;
 public string DeptName;
}

public class Employee {
 public int Id;
 public string Name;
 public int DeptId;
 public Department Department;
}

I'm coming from a c# background, and I could do this with c# using Entity Framework. Now it seems like this model works but when I included a sqllite functionality for the objects I'm not sure how to query it.

Here's my first try, but I'm not sure if this is the best way

public List<Employee> getAllEmployeesWithDepartments(){
    List<Employee> employees = new ArrayList<>();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery("SELECT * FROM Employee e LEFT JOIN Department d on e.DeptId = d.Id" , null);

    if(res.moveToFirst()){
        do{
            Employee emp = new Employee(); 
            emp.Id = res.getInt(res.getColumnIndex("Id"));
            emp.Name = res.getString(res.getColumnIndex("Name"));

            Department dep = new Department();
            dep.Id = res.getInt(res.getColumnIndex("Id"));
            dep.Name = res.getString(res.getColumnIndex("Name"));

            emp.Department = dep;
            employees.add(emp);
        }while (res.moveToNext());
     }
     return employees;
 }

Aucun commentaire:

Enregistrer un commentaire