gpt4 book ai didi

java - 在子类上调用时,Dynamo DB 映射器不会将基类元素保存到数据库

转载 作者:行者123 更新时间:2023-12-02 04:02:23 29 4
gpt4 key购买 nike

问题是我无法在子类上调用 .save() 时将基类成员保存到数据库。

我有两个类 A 类、B 类,在这两个类中我都有三个共同的成员:creationTimestamp、lastUpdatedTimestamp、version,因为这些很常见,我想我会将它们移动到基类中,比如 C 类。但是当我对A类的对象执行mapper.save(),我没有在DB中获取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;
}

现在,如果我对 A 类的对象执行mapper.save(),它只会将 id 保存到数据库。

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

相反,它应该显示版本,creationTimestamp,lastUpdatedTimestamp,id任何想法我在这里做错了什么?

最佳答案

您的类A需要扩展类C

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

关于java - 在子类上调用时,Dynamo DB 映射器不会将基类元素保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56727036/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com