Как сохранить унаследованный класс с помощью astyanax?
Я не могу сохранить данные дочернего класса с сохранением родительского класса, используя 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 ответ
Решение
EntityManager
требует тип объекта через withEntityType()
метод. Этот тип используется для построения EntityMapper
через отражение, которое затем определяет поля для сериализации. В документации или примерах сущностей Entity нет ничего, что говорило бы, что Astyanax поддерживает полиморфизм. Это не ошибка, просто функция, которой не существует. Вам понадобится конкретный тип EntityManager
для каждого подтипа вашего базового класса.