主键始终为0

时间:2019-07-11 16:19:30

标签: android database sqlite android-room

下午好, 在插入新的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;}
 }

0 个答案:

没有答案