下午好, 在插入新的Femme时,我总是得到相同的idF,其值为0。 我不知道是什么问题。只有使用此类,所有其他类才能正常创建。 我想在没有autoGenerate的情况下做,但是我有很多错误。 谢谢。
FemmeEntity
@Entity
public class Femme {
@PrimaryKey(autoGenerate = true)
private int idF;
private String nom, prenom, pseudo, mdp, grpSang, DN, LN;
private int age, poids;
@Ignore
public Femme(String nom, String prenom, String pseudo, String mdp) {
this.nom = nom;
this.prenom = prenom;
this.pseudo = pseudo;
this.mdp = mdp;
}
public Femme( String nom, String prenom, String pseudo, String mdp, String
grpSang, String DN, String LN, int age, int poids) {
this.nom = nom;
this.prenom = prenom;
this.pseudo = pseudo;
this.mdp = mdp;
this.grpSang = grpSang;
this.DN = DN;
this.LN = LN;
this.age = age;
this.poids = poids;
}}
FemmeDAO
@Dao
public interface FemmeDao {
@Insert
void insert(Femme femme);
@Update
void update(Femme femme);
@Delete
void delete(Femme femme);
@Query("SELECT * FROM Femme")
LiveData<List<Femme>> getAllFemmes();
@Query("select * from Femme where pseudo = :pseudo")
LiveData<Femme> getFemme(String pseudo);
@Query("select * from Femme where idF = :idF")
LiveData<Femme> getFemme(int idF);
}
FemmeRepository
public class FemmeRepository {
private FemmeDao femmeDao;
private LiveData<List<Femme>> allFemmes;
public FemmeRepository(Application application) {
DB_MJG db_mjg = DB_MJG.getInstance(application);
femmeDao = db_mjg.femmeDao();
allFemmes = femmeDao.getAllFemmes();
}
public void insert(Femme femme) {
new InsertFemmeAsyncTask(femmeDao).execute(femme);
}
private static class InsertFemmeAsyncTask extends AsyncTask<Femme, Void,
Void> {
private FemmeDao femmeDao;
private InsertFemmeAsyncTask(FemmeDao femmeDao) {
this.femmeDao = femmeDao;
}
@Override
protected Void doInBackground(Femme... femmes) {
femmeDao.insert(femmes[0]);
return null;
}
}
}
FemmeViewModel
public class FemmeViewModel extends AndroidViewModel {
private FemmeRepository repository;
private LiveData<List<Femme>> allFemmes;
public FemmeViewModel(@NonNull Application application) {
super(application);
repository = new FemmeRepository(application);
allFemmes = repository.getAllFemmes();
}
public void insert(Femme femme){ repository.insert(femme);}
public LiveData<List<Femme>> getAllFemmes(){ return allFemmes;}
}