如何使用astyanax保存继承的类?

时间:2014-07-22 20:00:54

标签: cassandra astyanax

我无法使用cassandra中使用astyanax的父类的持久性来保存子类数据。

我使用所有必需的数据创建了子对象,但是当我尝试存储该对象时,只存储来自父类的值,而不是来自子对象。

以下是示例代码不真实:

@Entity
class Shape{
    @Id
    private String id;
    @Column
    private String name;
}

@Entity
class square extends Shape{

    @column
    private int width;
}

now to store I am using EntityManager of  astyanax.

square s=new square();
s.setName("sqaure");
s.setWidth(100);
s.setId("1234");
EntityManager em= //initialization code
em.put(s);

after doing this only "name" and "id" is stored into database. not width.

1 个答案:

答案 0 :(得分:1)

EntityManager需要通过withEntityType()方法获取实体的类型。此类型用于通过反射构建EntityMapper,然后确定要序列化的字段。 Entity persistence documentation或示例中没有任何内容表明Astyanax支持多态。这不是一个错误,只是一个不存在的功能。对于基类的每个子类型,您将需要特定于类型的EntityManager