我无法使用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.
答案 0 :(得分:1)
EntityManager
需要通过withEntityType()
方法获取实体的类型。此类型用于通过反射构建EntityMapper
,然后确定要序列化的字段。 Entity persistence documentation或示例中没有任何内容表明Astyanax支持多态。这不是一个错误,只是一个不存在的功能。对于基类的每个子类型,您将需要特定于类型的EntityManager
。