【发布时间】:2021-01-20 05:13:33
【问题描述】:
在 IntellyJ Idea 中,我安装了 SonarLint。
代码分析器说我必须从此注释组中删除“NamedEntityGraphs”包装器。 这是我的代码:
@NamedEntityGraphs({
@NamedEntityGraph(
name = Application.ONLY_NAME,
attributeNodes = {
@NamedAttributeNode("foo"),
@NamedAttributeNode("bar")
}
),
@NamedEntityGraph(name = Application.FULL,
attributeNodes = {
@NamedAttributeNode("foo"),
@NamedAttributeNode("bar"),
@NamedAttributeNode("buzz")
}
)
})
public class SomeClass { ... }
以下是来自 SonarLint 的参数:
注释重复不应被包装 代码异味,Minor,java:S1710
在 Java 8 之前,如果您需要使用同一注解的多个实例,则必须将它们包装在容器注解中。在 Java 8 中,这不再是必需的,允许更清晰、更易读的代码。 请注意,当项目的 sonar.java.source 低于 8 时,此规则会自动禁用。
不合规代码示例
@SomeAnnotations({ // Noncompliant
@SomeAnnotation(..a..)
@SomeAnnotation(..b..)
@SomeAnnotation(..c..)
})
public class SomeClass { ... }
合规解决方案
@SomeAnnotation(..a..)
@SomeAnnotation(..b..)
@SomeAnnotation(..c..)
public class SomeClass { ... }
问题:
是否有人知道如何组织@NamedEntityGraphs 以获得兼容的代码?
【问题讨论】:
-
为什么不直接删除
@NamedEntityGraphs,因为正如您的工具所指出的,它是不必要的?@NamedEntityGraph注解是@Repeatable。
标签: java jpa spring-data-jpa annotations entitygraph