के लिए कई ORMLite मैं दो वर्गों है:कई संबंध एंड्रॉयड
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;
}
}
आप देख सकते हैं, ये हैं कई-करने के लिए - कई जुड़े हुए (0 ... एन --- 0 ... एन, ORMLite एनोटेशन के साथ)।
अब, मेरे कार्यप्रवाह है:
मैं कई "UniteStratigraphique" वर्गों बना सकते हैं और मैं उन्हें अपने डेटाबेस में स्टोर (इस ठीक काम करता है)।
=> तो मेरे पास n * "uniteStratigraphique" संग्रहीत है।
इसके बाद मैं जो चाहता हूं वह "कैंपेन" वर्ग बनाना है जिसमें कई "यूनिटस्ट्रेटिग्राइक" कक्षाएं होंगी।
=> तो मैं "Campagne.java" से इस क्षेत्र को सेट करना चाहते हैं: के साथ n * "UniteStratigraphique" तत्वों मैं बस से पहले संग्रहीत
@ForeignCollectionField
private ForeignCollection<UniteStratigraphique> listeUniteStratigraphique;
।
मैं इस डीएओ विधि के साथ ऐसा करने की कोशिश की लेकिन यह केवल मेरी db में "UniteStratigraphique" वर्गों नकल और कोई लिंक किया जाता है ..
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);
}
}
}
और मेरी गतिविधि में मैं यह कर रहा हूँ:
db.addCampagne(campagne);
if(myUniteStratigraphiqueArray.size() > 0){
db.addUsToCampagne(campagne, myUniteStratigraphiqueArray);
}
क्या आप अपना कोड सुधार सकते हैं। जैसा कि यह खड़ा है यह दूसरों के लिए सहायक नहीं है। – Gray