BaseEntity @Inheritance-如何从超类继承字段

时间:2019-08-21 11:22:27

标签: java spring spring-data-couchbase

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

我创建了一个称为BaseEntity的超类,其中声明了所有子类的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
}

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

1 个答案:

答案 0 :(得分:0)

好,我解决了这个问题。

@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();
   }
}