Android 용 ORMLite 프레임 워크를 사용하는 방법을 배우고 있습니다.쿼리 개체에 조건이있는 외국 컬렉션이 있습니다.
하지만 문제를 해결하기 위해 여러 가지 방법을 시도했지만 실패했습니다.
예를 들면. 내가 2 개 데이터베이스 클래스가 있습니다
그것은 레코드가 데이터베이스에서 삭제되지 않습니다 것을 요구@DatabaseTable(tableName = "Subject")
public class Subject {
@DatabaseField(columnName = "id", id = true)
protected String id;
@DatabaseField(columnName = "deleteFlag", canBeNull = false, defaultValue = "0")
protected boolean deleteFlag = false;
@DatabaseField(columnName = "name", canBeNull = false)
private String name;
@ForeignCollectionField(eager = true, maxEagerLevel = 3)
private Collection<Student> students;
...
}
@DatabaseTable(tableName = "Student")
public class Student {
@DatabaseField(columnName = "id", id = true)
protected String id;
@DatabaseField(columnName = "deleteFlag", canBeNull = false, defaultValue = "0")
protected boolean deleteFlag = false;
@DatabaseField(columnName = "firstName", canBeNull = false)
private String firstName;
@DatabaseField(columnName = "lastName", canBeNull = true)
private String lastName;
@DatabaseField(columnName = "subjectId", canBeNull = false, foreign = true, foreignColumnName = "id")
private Subject subject;
...
}
, 그것은 단지 deleteFlag 컬럼으로 표시 될 수있다.
이제 "deleteFlag = false"가있는 모든 주제를 쿼리하려고합니다. 각 과목에는 "deleteFlag = false"도있는 학생 목록이 있습니다.
SubjectDao를 사용하여 쿼리 할 수있는 방법이 있습니까 ???
아니면 2 단계해야 "deleteFlag = 거짓"이 모든 과목을 조회 할 수 SubjectDao를 사용
을;
"deleteFlag = false"가있는 해당 주제의 모든 학생을 검색하기 위해 StudentDao를 사용하여 주제 목록에서 반복하십시오. 그런 다음 대상 목록에 학생 목록을 설정합니다.
감사합니다.
삭제시 문제가 발생하지 않았습니다. 방금 레코드의 deleteFlag를 true로 설정하면 해당 레코드는 DELETED로 간주됩니다. –
내 문제는 데이터를 쿼리하는 것입니다. 예를 들어, Subject1에는 3 명의 학생 St1, St2, St3이 있습니다. St1과 St2에는 deleteFlag가, St3에는 deleteFlag가 설정되어 있습니다. 내 요구 사항은 Subject1의 외국 수집에만 St1 ans St2 있습니다. 그러나 SubjectDao를 사용하여 쿼리 할 때 컬렉션에는 항상 3이 있습니다. 이 문제를 처리하도록 도와주세요. –
나는 내 대답 @ThanhPham을 편집했습니다. – Gray