如何查询将另一个对象作为属性的对象?我还需要获取属性的值。这是我的模特:
public class Department {
public int DeptId;
public string DeptName;
}
public class Employee {
public int Id;
public string Name;
public int DeptId;
public Department Department;
}
我来自c#背景,我可以使用实体框架使用c#执行此操作。现在看来这个模型可以工作,但是当我为对象包含sqllite功能时,我不确定如何查询它。
这是我的第一次尝试,但我不确定这是不是最好的方法
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;
}
答案 0 :(得分:0)
你很困惑。 SQLite没有对象。它是一个基于表的数据库(几乎与所有数据库一样)。您可以将对象映射到表中,但您必须自己创建这些映射。由于SQLite没有对象,因此它肯定没有子对象。您通常通过在主表上使用外键约束连接另一个表来制作类似的东西,但它实际上是由您的架构定义的。你没有通用的答案。