我正在为我的实体的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
。
我想知道是否可以将这些注释归为一组。
发布于 2018-08-12 00:18:27
不,这不可能。JPA没有这种元注释的概念(如错误消息所示)。
注意,这个问题与Spring无关,因为所有这些批注都是JPA批注,而不是Spring批注。
发布于 2018-08-12 00:28:50
Spring Boot不提供此注释的实现。这是Hibernate等JPA实现的职责。据我所知,您不能为Hibernate引入新的Id注释。标准JPA注释不能被替换,因为它们是标准的一部分。你唯一能做的就是创建自定义子类,它将分配所需的id,或者实现一些工厂,它将创建具有已分配Id的实体实例。
https://stackoverflow.com/questions/51801494
复制相似问题