2016-04-07 8 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#の背景から来ており、私はこれをEntity Frameworkを使って行うことができます。今はこのモデルのように思えますが、オブジェクトに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はオブジェクトを持っていないので、間違いなくサブオブジェクトがありません。メインテーブルの外部キー制約を使用して別のテーブルを結合することで、一般的にそのようなものを作成しますが、実際にはスキーマによって定義されます。あなたには一般的な答えはありません。

関連する問題