代码之家  ›  专栏  ›  技术社区  ›  Arian

JPA:创建自定义ID注释

  •  0
  • Arian  · 技术社区  · 8 年前

    我正在为我的实体的id字段创建一个新的自定义id注释:

    @Id
    @GeneratedValue(generator = RandomAlphanumericIdGenerator.generatorName)
    @GenericGenerator(name = RandomAlphanumericIdGenerator.generatorName, strategy = "com.boot.myproject.utils.RandomAlphanumericIdGenerator")
    private String id;
    

    它工作得很好。但我想把这三个注释组合在一个新注释下:

    @Id
    @GeneratedValue(generator = RandomAlphanumericIdGenerator.generatorName)
    @GenericGenerator(name = RandomAlphanumericIdGenerator.generatorName, strategy = "com.boot.myproject.utils.RandomAlphanumericIdGenerator")
    @Target({FIELD})
    @Retention(RUNTIME)
    public @interface RandomAlphanumericId {
    
    }
    

    The annotation @Id is disallowed for this location .

    2 回复  |  直到 8 年前
        1
  •  2
  •   JB Nizet    8 年前

    不,不可能。JPA没有这种元注释的概念(如错误消息所示)。

        2
  •  0
  •   jreznot    8 年前

    springboot不提供此注释的实现。这是Hibernate等JPA实现的责任。正如我所知,您不能为Hibernate引入新的Id注释。不能替换标准JPA注释,因为它们是标准的一部分。你唯一能做的就是创建你的自定义子类,它将分配所需的Id,或者实现一些工厂来创建具有指定Id的实体实例。