0

The value '.2F' below is not persisted. I get no errors, but only null is returned. Can you please suggest a correction or improvements on the following code? I'm trying to persist this in the GAE test database.

I left a comment where I attempted an EmbeddedMap, however, I don't think that is necessary since I'm using a Map with simple types.

public class UserBeanApp extends Model {

    private static final long serialVersionUID = 1L;

    @Id(Generator.AUTO_INCREMENT)
    public Long id;

    @Unindexed
    private RequiredReturnsBean requiredReturns;

    public RequiredReturnsBean getReqRetBean() {
        if (requiredReturns == null)
            requiredReturns = new RequiredReturnsBean();
        else
            requiredReturns.get();

        return requiredReturns;
    }
}


public class RequiredReturnsBean extends Model {

    @Id(Generator.AUTO_INCREMENT)
    public Long id;

    // @EmbeddedMap
    // public static class RequiredReturn {
    // public RequiredReturn(Float requiredReturn) {
    // this.val = requiredReturn;
    // }
    //
    // public Float val;
    // }

    @Unindexed
    @Embedded
    public Map<Long, Float> requiredReturn = new HashMap<Long, Float>();

    public Map<Long, Float> getReqRetMap() {
        if (requiredReturn == null) {
            requiredReturn = new HashMap<Long, Float>();
        }

        return requiredReturn;
    }

}

... create ...

UserBeanApp bean = get....//already persisted
RequiredReturnsBean rrBean = bean.getReqRetBean();
rrBean.getReqRetMap().put(1L, .2F);
rrBean.save();

... select ...

UserBeanApp bean = get....//already persisted
RequiredReturnsBean rrBean = bean.getReqRetBean();
requiredReturn = rrBean.getReqRetMap().get(1L);//always null

gae-1.6.0 siena-2.0.6

jcalfee314
  • 4,642
  • 8
  • 43
  • 75
  • 1
    This could be a bug since @embedded was a bit experimental (I don't maintain siena anymore so don't hesitate to investigate by yourself)... Did you try to just save a RequiredReturnsBean and retrieve it without going through UserBeanApp – mandubian Dec 04 '12 at 07:48
  • Same thing, the hash table is empty upon fetch. This is the test: `RequiredReturnsBean rr = new RequiredReturnsBean(); rr.getReqRetMap().put(1L, .2F); rr.save(); Out.pl(rr.id);//43, 44, etc.... rr = RequiredReturnsBean.getByKey(RequiredReturnsBean.class, rr.id); Out.pl(rr.requiredReturn.get(1L)); //null` – jcalfee314 Dec 04 '12 at 16:16

0 Answers0