2016-04-07 218 views
0

如何查詢將另一個對象作爲屬性的對象?我也需要獲得財產的價值。這裏是我的模型:Android sqllite,查詢屬於另一個對象屬性的對象

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

你困惑。 SQLite沒有對象。它是基於表格的數據庫(就像幾乎所有的數據庫一樣)您可以將對象映射到表中,但您必須自己創建這些映射。由於SQLite沒有對象,它絕對沒有子對象。通常通過在主表上加入另一個具有外鍵約束的表來實現類似的效果,但它確實由您的模式定義。對你沒有一般的答案。

相關問題