gpt4 book ai didi

java - 注释聚合

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:38 25 4
gpt4 key购买 nike

我有多个类,其中我在定义表的主键的字段上总是有相同的注释,例如:

@Id 
@Type(type = "uuid-binary")
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2",
parameters = { @Parameter(
name = "uuid_gen_strategy_class",
value = "org.hibernate.id.UUIDGenerationStrategy")
})
@Column(name="PROFILE_ID", unique = true)
@NotNull(message = "we have one message" , payload =Severity.Info.class)
private UUID profileId;

现在我正在寻找一种方法来将所有这些注释聚合到一个单独的注释中,比如在我进行验证时进行注释聚合,即我可以从(javax.validation.constraints) 添加到以下名为“名称”的注释中。

 package org.StudentLib.CustomeAnnotations;
import …
@Target( {FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = {})
@Documented
@NotNull
@Id
@Size(message = "The size of the name should be between {min} and {max} caracters",
min = 1, max = 50,
payload = Severity.Info.class
)
public @interface Name {
}

那么我如何为持久性注释做同样的事情,我总是得到

The annotation @Id is disallowed for this location

为什么我会收到这个错误?有没有一种方法可以将持久性注释和验证注释组合在一个注释中。我问这个的原因是因为我的代码中有大约 40 个表(实体),每次我需要定义该表的主键时,我都觉得我在重复代码。

最佳答案

您收到此错误是因为应用于 Id 注释类型的 Target 元注释在其注释类型中不包含参数 ANNOTATION_TYPE值域。看看 javadoc , 你会看到它 (ctrl+f '@Target').

@Target元注释描述了可以应用注释的 java 语言构造。由于您无法将此注释应用于 ANNOTATION_TYPE,因此您将无法创建此类快捷方式注释。

作为旁注,您可以通过查看此 javadoc 看到,@Target 具有 @Target{ANNOTATION_TYPE},这实际上是使注释成为元注释的原因。

关于java - 注释聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21517101/

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