ORMLite不加载外来字段

时间:2014-04-29 20:47:03

标签: android ormlite

我有以下问题,我有两个相关的记录,一切都很好但是当我返回父对象时,相关对象没有完全填写。 在我的课程下面

@DatabaseTable(tableName =“condicaopagamento”)     公共课CondicaoPagamento {

    @DatabaseField(generatedId=true)
    private Integer id;

    @DatabaseField
    private String descricao;

    @DatabaseField
    private Integer quatidadeParcela;

    @DatabaseField
    private Integer diasParcelamento;

    @DatabaseField
    private boolean usarMesComercial;

    @DatabaseField
    private Integer parcelaArredondamento;

    @DatabaseField(canBeNull = true, foreign=true, maxForeignAutoRefreshLevel=3)
    private FormaCobranca formaCobranca;

    @DatabaseField
    private Double desconto;

    @DatabaseField
    private Double acrescimo;
    //@ForeignCollectionField
    //private Collection<Cliente> clientes;

    public Integer getId() {
        return id;
    }

    public String getDescricao() {
        return descricao;
    }

    public Integer getQuatidadeParcela() {
        return quatidadeParcela;
    }

    public Integer getParcelaArredondamento() {
        return parcelaArredondamento;
    }

    public Integer getDiasParcelamento() {
        return diasParcelamento;
    }

    public FormaCobranca getFormaCobranca() {
        return formaCobranca;
    }

    public Double getDesconto() {
        return desconto;
    }

//    public Collection<Cliente> getClientes() { return clientes; }

    public Double getAcrescimo() {
        return acrescimo;
    }

    public boolean isUsarMesComercial() {
        return usarMesComercial;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public void setQuatidadeParcela(Integer quatidadeParcela) {
        this.quatidadeParcela = quatidadeParcela;
    }

    public void setParcelaArredondamento(Integer parcelaArredondamento) {
        this.parcelaArredondamento = parcelaArredondamento;
    }

    public void setUsarMesComercial(boolean usarMesComercial) {
        this.usarMesComercial = usarMesComercial;
    }

    public void setFormaCobranca(FormaCobranca formaCobranca) {
        this.formaCobranca = formaCobranca;
    }

    public void setDiasParcelamento(Integer diasParcelamento) {
        this.diasParcelamento = diasParcelamento;
    }

    public void setAcrescimo(Double acrescimo) {
        this.acrescimo = acrescimo;
    }

    public void setDesconto(Double desconto) {
        this.desconto = desconto;
    }

   // public void setClientes(Collection<Cliente> clientes) {
   //     this.clientes = clientes;
   // }
}
@DatabaseTable(tableName = "formacobranca")
public class FormaCobranca {
    @DatabaseField(id = true)
    private Integer id;
    @DatabaseField
    private String descricao;

    public Integer getId() {
        return id;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
}
FormaCobranca fc = new FormaCobranca();
    fc.setDescricao("FORMA 1");

    DatabaseHelper helper = new DatabaseHelper(getContext());

    FormaCobrancaDao daoFC = new FormaCobrancaDao(helper.getConnectionSource());
    daoFC.createIfNotExists(fc);

    FormaCobranca persistidoFC = (FormaCobranca)daoFC.queryForEq("id", 1).get(0);

    CondicaoPagamento cp = new CondicaoPagamento();
    cp.setDescricao("Condicao2");
    cp.setFormaCobranca(persistidoFC);

    CondicaoPagamentoDao daoCP = new CondicaoPagamentoDao(helper.getConnectionSource());
    daoCP.createIfNotExists(cp);

    //CondicaoPagamento persistido = (CondicaoPagamento)daoCP.queryForEq("descricao", "Condicao2").get(0);

    CondicaoPagamento persistido = (CondicaoPagamento)daoCP.queryForId(1);
    FormaCobranca pFC = persistido.getFormaCobranca();

在pFC属性描述中,这将变为“NULL”。

1 个答案:

答案 0 :(得分:0)

您忘了为foreignAutoRefresh=true注释指定@DatabaseField。 此外,请阅读此答案https://stackoverflow.com/a/14466145/3802890