Как сохранить унаследованный класс с помощью 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 для каждого подтипа вашего базового класса.

Другие вопросы по тегам