Динамо DB Mapper не сохраняет элементы базового класса в БД при вызове на дочернем классе - PullRequest
0 голосов
/ 23 июня 2019

Проблема в том, что я не могу сохранить членов базового класса в БД при вызове .save () для дочернего класса.

У меня есть два класса: класс A, класс B, у меня есть три общих члена в обоих этих классах creationTimestamp, lastUpdatedTimestamp, version, так как они были общими, я думал, что переместу их в базовый класс, скажем, класс C. Но когда я сделать mapper.save () на объект класса A, я не получаю членов класса C в БД.

@Getter
@Setter
@DynamoDBDocument
@EqualsAndHashCode
@NoArgsConstructor
abstract class C {
    @DynamoDBVersionAttribute
    private Long version;

    @DynamoDBAutoGeneratedTimestamp(strategy = DynamoDBAutoGenerateStrategy.CREATE)
    @DynamoDBTypeConvertedTimestamp
    private Long creationTimestamp;

    @DynamoDBAutoGeneratedTimestamp(strategy = DynamoDBAutoGenerateStrategy.ALWAYS)
    @DynamoDBTypeConvertedTimestamp
    private Long lastUpdatedTimestamp;
}

Класс A:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@DynamoDBTable(tableName = "A")
public class A {
    private String id;
}

Теперь, если я выполняю mapper.save () для объекта класса A, он только сохраняет id в db.

A a = A.builder().id("random").build();
mapper.save(a);

Скорее, он должен был показать версию, creationTimestamp, lastUpdatedTimestamp, id какие-либо идеи, что я здесь не так делаю?

1 Ответ

0 голосов
/ 25 июня 2019

Ваш класс A должен продлить класс C

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@DynamoDBTable(tableName = "A")
public class A extends C {
    private String id;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...