Ciao,
premetto che sono agli e questa é la prima volta che cerco di prendere dei dati da un API tramite retrofit e di inserirli nel sqlLite.
Ho creato tre classi
La principale Client principale e poi che é Civilite e Adresse che vengono usate in Client
Civilite potrebbe essere nullo
Inoltre Civilite ha sempre solo tre tipi di valore, quindi ha una relazione 1 a N
@Entity(tableName = "Civilite")
public class Civilite {
private String idCivilite ;
private String intitule;
}
se creo la classe senza primarykey ricevo il messaggio
error: An entity must have at least 1 field annotated with @PrimaryKey
public class Civilite {
dunque per andare avanti e cercare di capire ho provato a mettere
@PrimaryKey
@NotNull
private String idCivilite ;
Quindi il primo problema e che non ho capito come creare nel db una tabella con questa relazione
Il secondo problema che non riesco a superare e che quando vado a scrivere nel db mi da eccezione e dice che Civilite é nulla e non puo creare Client
ma io ho impostato Civilite come Nullable
@Entity(tableName = "Contact")
public class Client {
@PrimaryKey
@NonNull
private String id;
private String numero;
private String typeClient;
@Nullable
private String denomination;
@Nullable
private String nom;
@Nullable
private String prenom;
@Nullable
private String email;
@TypeConverters(CiviliteTypeConverter.class)
@Nullable
private Civilite civilite;
}
nel mio codice per inserire i dati nel db ho scritto questo
var civilite: Civilite? = null
if (_client.civilite != null) {
civilite = Civilite(
_client.civilite.idCivilite,
_client.civilite.intitule
)
}
var client = Client(
_client.id,
_client.numero,
_client.typeClient,
_client.denomination,
_client.nom,
_client.prenom,
_client.email,
civilite,
adresse,
dateNaissance,
etatMarital
)
if (civilite != null) {
myAppDatabase.myDao().addUser(client)
myAppDatabase.myDao().addAdresse(adresse)
if (civilite != null) {
myAppDatabase.myDao().addCivilite(civilite)
}
}
sono certo che il problema é sulla civilite perché se riempio con dei dati fissi Civilite e dunque non é null tutto viene inserito correttamente
L'eccezione che ricevo su myAppDatabase.myDao().addUser(client)
é questa
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter value
Potete cortesemente aiutarmi ed indicarmi cosa sto sbagliando?
Grazie