java - BaseEntity @Inheritance - 如何从父类(super class)继承字段

标签 java spring spring-data-couchbase

我正在尝试使用 spring-data-couchbase 创建数据模型。

我创建了一个名为 BaseEntity 的父类(super class),其中声明了所有子类的 ID 和基本字段。 @IdSuffix@IdPrefix 注释对我来说工作正常,但 @Field 注释不起作用。

我尝试过@Inheritance@MappedSuperClass@Document、...

这是一个例子:

@Data
@Document
public abstract class BaseEntity {

   @IdPrefix(order = 0) // works fine!
   @Field               //don't work
   protected long number;

   @IdSuffix(order =0) // works fine!
   private UUID uuid;

   public BaseEntity(long number){
      this.number = number;
      this.uuid = UUID.randomUUID();
   }
}

@Data
@Document
public class Entity extends BaseEntity{

   public Entity(long number){
      super(number);
   }

   @Id
   @GeneratedValue(strategy = GenerationStrategy.USE_ATTRIBUTES, delimiter = "::")
    private String id;

   @Field                  // works!
   private LocalDate date;
}

结果是:

id= 1234567::467f970e-ab98-4244-afcf-7af81361d60a

{
   "date": 1435301400000
}

我期望文档中的字段编号。

最佳答案

好的,我解决了问题。

@IdPrefix@Field 注释不能一起工作。

解决办法:

@Data
@Document
public abstract class BaseEntity {

   @IdPrefix(order = 0) // works fine!
   protected long numberPrefix;

   @Field               // Solution
   protected long number;

   @IdSuffix(order =0) // works fine!
   private UUID uuid;

   public BaseEntity(long number){
      this.number = number;
      this.numberPrefix = number;
      this.uuid = UUID.randomUUID();
   }
}

关于java - BaseEntity @Inheritance - 如何从父类(super class)继承字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590510/

相关文章:

java - 匹配数字模式

java - 如何在spring mvc中使用带有freemarker的消息?

spring - 在 Spring 中从 couchbase 读取字节数组

spring - 如何在 spring @Query 注释中放置带有变量的 n1ql 查询?

java - 设计基准测试

java - 打乱数组列表后,如何在数组列表中跟踪正确答案?

java - 此模式与输入 123456789.2.2.2 匹配,但不应匹配

java - 这个spring类BatchPreparedStatementSetter有什么用呢?

java - Spring如何使用ThreadLocal变量

java - 如何让 Spring Data Couchbase 保留 id 字段?