Java 如何避免;“气味代码”;当使用@NamedEntityGraphs注释时?

Java 如何避免;“气味代码”;当使用@NamedEntityGraphs注释时?,java,jpa,spring-data-jpa,annotations,entitygraph,Java,Jpa,Spring Data Jpa,Annotations,Entitygraph,在IntellyJ Idea中,我安装了Sonarint 代码分析器说我必须从这个注释组中删除“NamedEntityGraphs”包装器。 这是我的密码: @NamedEntityGraphs({ @NamedEntityGraph( name = Application.ONLY_NAME, attributeNodes = { @NamedAttributeNod

在IntellyJ Idea中,我安装了Sonarint

代码分析器说我必须从这个注释组中删除“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 {  ...  }
以下是Sonarint的参数:

注释重复不应被包装 代码气味,小调,java:S1710

在Java8之前,如果需要使用同一注释的多个实例,则必须将它们包装在容器注释中。在Java8中,这不再是必需的,允许更干净、更可读的代码。 请注意,当项目的sonar.java.source低于8时,此规则将自动禁用

不遵从代码示例

兼容解决方案

问题:


enybody是否知道如何组织@NamedEntityGraphs以获得complient代码?

只需按照工具告诉您的操作(以及注释中的@Slaw):删除外部注释并重复即可


您已经在代码本身中给出了答案。 只需删除
@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 {  ...  }

为什么不删除
@NamedEntityGraphs
,因为正如您的工具所指出的,它是不必要的?
@NamedEntityGraph
注释是可重复的。
@SomeAnnotation(..a..)
@SomeAnnotation(..b..)
@SomeAnnotation(..c..)
public class SomeClass {  ...  }
@NamedEntityGraph(
        name = Application.ONLY_NAME,
        attributeNodes = {
                @NamedAttributeNode("foo"),
                @NamedAttributeNode("bar")
        }
),
@NamedEntityGraph(name = Application.FULL,
        attributeNodes = {
                 @NamedAttributeNode("foo"),
                 @NamedAttributeNode("bar"),
                 @NamedAttributeNode("buzz")
       }
)
public class SomeClass {  ...  }
@NamedEntityGraph(name = Application.ONLY_NAME,
                attributeNodes = {
                        @NamedAttributeNode("foo"),
                        @NamedAttributeNode("bar")
                }
        )
@NamedEntityGraph(name = Application.FULL,
                attributeNodes = {
                        @NamedAttributeNode("foo"),
                        @NamedAttributeNode("bar"),
                        @NamedAttributeNode("buzz")
                }
        )
public class SomeClass {  ...  }