Tôi có hai lớp:ORMLite nhiều đối với nhiều mối quan hệ Android
UniteStratigraphique.java:
@DatabaseTable(tableName = "unitestratigraphique")
public class UniteStratigraphique {
public final static String ID_FIELD_NAME = "id";
@DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
private int id;
// CAMPAGNES
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private Campagne campagne;
@ForeignCollectionField
private ForeignCollection<Campagne> listeCampagnes;
public UniteStratigraphique() {}
public Campagne getCampagne() {
return campagne;
}
public void setCampagne(Campagne campagne) {
this.campagne = campagne;
}
public ArrayList<Campagne> getListeCampagnes() {
ArrayList<Campagne> campagnesArray = new ArrayList<Campagne>();
for (Campagne campagne : listeCampagnes) {
campagnesArray.add(campagne);
}
return campagnesArray;
}
public ForeignCollection<Campagne> getListeCampagnesForeign() {
return listeCampagnes;
}
public void setListeCampagnes(ForeignCollection<Campagne> listeCampagnes) {
this.listeCampagnes = listeCampagnes;
}
}
Campagne.java:
@DatabaseTable(tableName = "campagne")
public class Campagne {
@DatabaseField(generatedId = true)
private int id;
// UNITE STRATIGRAPHIQUE
@ForeignCollectionField
private ForeignCollection<UniteStratigraphique> listeUniteStratigraphique;
@DatabaseField(foreign = true, foreignAutoRefresh = true)
private UniteStratigraphique uniteStratigraphique;
public Campagne() {}
public ArrayList<UniteStratigraphique> getListeUniteStratigraphique() {
ArrayList<UniteStratigraphique> usArray = new ArrayList<UniteStratigraphique>();
for (UniteStratigraphique us : listeUniteStratigraphique){
usArray.add(us);
}
return usArray;
}
public ForeignCollection<UniteStratigraphique> getListeUniteStratigraphiqueForeign() {
return listeUniteStratigraphique;
}
public void setListeUniteStratigraphique(
ForeignCollection<UniteStratigraphique> listeUniteStratigraphique) {
this.listeUniteStratigraphique = listeUniteStratigraphique;
}
public int getSizeListeUniteStratigraphique() {
return listeUniteStratigraphique.size();
}
public UniteStratigraphique getUniteStratigraphique() {
return uniteStratigraphique;
}
public void setUniteStratigraphique(UniteStratigraphique uniteStratigraphique) {
this.uniteStratigraphique = uniteStratigraphique;
}
}
Như bạn có thể thấy, đây là những Nhiều-To -Nhiều liên kết (0 ... n --- 0 ... n, với chú thích ORMLite).
Bây giờ, công việc của tôi là:
tôi có thể tạo nhiều "UniteStratigraphique" lớp học và tôi lưu trữ chúng vào cơ sở dữ liệu của tôi (điều này hoạt động tốt).
=> Vì vậy, tôi có n * "UniteStratigraphique" được lưu trữ.
Sau đó, những gì tôi muốn là tạo một lớp "Campagne" có chứa nhiều lớp "UniteStratigraphique".
=> Vì vậy, tôi muốn thiết lập lĩnh vực này từ "Campagne.java":
@ForeignCollectionField
private ForeignCollection<UniteStratigraphique> listeUniteStratigraphique;
với n * "UniteStratigraphique" yếu tố tôi chỉ được lưu trữ trước đó.
Tôi cố gắng để làm điều này với phương pháp DAO này nhưng nó chỉ lặp lại trong các "UniteStratigraphique" lớp học vào db của tôi và không có liên kết được thực hiện ..
public void addUsToCampagne(Campagne campagne,
ArrayList<UniteStratigraphique> usArray) {
ForeignCollection<UniteStratigraphique> usForeign = campagne
.getListeUniteStratigraphiqueForeign();
if (usForeign == null) {
try {
usForeign = getHelper().getCampagneDao()
.getEmptyForeignCollection("listeUniteStratigraphique");
for (UniteStratigraphique us : usArray) {
usForeign.add(us);
}
} catch (SQLException e) {
e.printStackTrace();
}
}else{
for (UniteStratigraphique us : usArray) {
usForeign.add(us);
}
}
}
Và trong Hoạt động của tôi, tôi đang làm điều này:
db.addCampagne(campagne);
if(myUniteStratigraphiqueArray.size() > 0){
db.addUsToCampagne(campagne, myUniteStratigraphiqueArray);
}
Bạn có thể định dạng lại mã của mình không. Vì nó đứng nó không hữu ích cho người khác. – Gray