I am working with OrmLite on android, I can obtain the attributes of my Debtor object with this code, but if I access the Debt object from Debtor, it returns null the attributes. On the other hand, if I access directly from the Debt object if the records appear I do not know what I could be doing wrong ...
Dao dao;
try {
dao = getHelper().getDeudorDao();
Deudor deudor = (Deudor) dao.queryForId(1);
if (deudor == null) {
Log.d("bnx", "Ningún deudor");
} else {
List<Deudor> de = dao.queryForAll();
for(Deudor d:de){
Log.d("bnx","objeto deudor.nombre: "+d.getNombre());
Log.d("bnx","objeto deudor.objeto.deuda.tostring: "+d.getDeuda().toString());
}
}
} catch (SQLException e) {
Log.e("bnx", "Error");
}
log
03-02 10:35:20.701 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Bruno
03-02 10:35:20.701 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=1, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.701 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Isis
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=2, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Pedro
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=3, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Carlos
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=4, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Hug
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=5, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Pablo
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=6, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.nombre: Guss
03-02 10:35:20.702 9182-9182/com.brunox.myapp D/bnx: objeto deudor.objeto.deuda.tostring: Deuda{id=7, descripcion='null', fecha=null, monto=null, restante=null, abono=null}
debtor object
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable
public class Deudor {
@DatabaseField(generatedId = true, columnName = "id")
private Integer id;
@DatabaseField(columnName = "nombre")
private String nombre;
@DatabaseField(columnName = "telefono")
private Integer telefono;
@DatabaseField(foreign = true, columnName = "deuda")
private Deuda deuda;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public Integer getTelefono() {
return telefono;
}
public void setTelefono(Integer telefono) {
this.telefono = telefono;
}
public Deuda getDeuda() {
return deuda;
}
public void setDeuda(Deuda deuda) {
this.deuda = deuda;
}
}
debt object
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.util.Date;
@DatabaseTable
public class Deuda {
@DatabaseField(generatedId = true, columnName = "id")
private Integer id;
@DatabaseField(columnName = "descripcion")
private String descripcion;
@DatabaseField(columnName = "fecha")
private Date fecha;
@DatabaseField(columnName = "monto")
private Float monto;
@DatabaseField(columnName = "restante")
private Float restante;
@DatabaseField(foreign = true, columnName = "abono")
private Abono abono;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Date getFecha() {
return fecha;
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}
public Float getMonto() {
return monto;
}
public void setMonto(Float monto) {
this.monto = monto;
}
public Float getRestante() {
return restante;
}
public void setRestante(Float restante) {
this.restante = restante;
}
public Abono getAbono() {
return abono;
}
public void setAbono(Abono abono) {
this.abono = abono;
}
@Override
public String toString() {
return "Deuda{" +
"id=" + id +
", descripcion='" + descripcion + '\'' +
", fecha=" + fecha +
", monto=" + monto +
", restante=" + restante +
", abono=" + abono +
'}';
}
}
DbHelper
import java.sql.SQLException;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.brunox.myapp.Entity.Abono;
import com.brunox.myapp.Entity.Deuda;
import com.brunox.myapp.Entity.Deudor;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
public class DBHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "db_deudores.db";
private static final int DATABASE_VERSION = 1;
private Dao<Deudor, Integer> deudorDao;
private Dao<Deuda, Integer> deudaDao;
private Dao<Abono, Integer> abonoDao;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Deudor.class);
TableUtils.createTable(connectionSource, Deuda.class);
TableUtils.createTable(connectionSource, Abono.class);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) {
onCreate(db, connectionSource);
}
public Dao<Deudor, Integer> getDeudorDao() throws SQLException {
if (deudorDao == null) {
deudorDao = getDao(Deudor.class);
}
return deudorDao;
}
public Dao<Deuda, Integer> getDeudaDao() throws SQLException {
if (deudaDao == null) {
deudaDao = getDao(Deuda.class);
}
return deudaDao;
}
public Dao<Abono, Integer> getAbonoDao() throws SQLException {
if (abonoDao == null) {
abonoDao = getDao(Abono.class);
}
return abonoDao;
}
@Override
public void close() {
super.close();
deudorDao = null;
deudaDao = null;
abonoDao = null;
}
}