Java @RelatedTo(elementClass=Concept.class)RelatedTo.elementClass必须是类

Java @RelatedTo(elementClass=Concept.class)RelatedTo.elementClass必须是类,java,spring,neo4j,spring-data-graph,Java,Spring,Neo4j,Spring Data Graph,阅读本文后,我尝试以以下方式应用我的代码: Triple @Entity @Table(name = "triple") @NodeEntity public class TripleDBMoldelNeoImpl implements TripleDBModel{ protected List<Annotation> annotations; @RelatedTo(type = "subject", elementClass = (Class<? exten

阅读本文后,我尝试以以下方式应用我的代码:

Triple

@Entity
@Table(name = "triple")
@NodeEntity
public class TripleDBMoldelNeoImpl implements TripleDBModel{
    protected List<Annotation> annotations;

    @RelatedTo(type = "subject", elementClass = (Class<? extends NodeBacked>) Concept.class) //This is the suggestion Eclipse gives me
    public Concept subject;
    @RelatedTo(type = "object", elementClass = Concept.class)
    public Concept object;
    @RelatedTo(type = "predicate", elementClass = Concept.class)
    public Concept predicate;


    @ManyToMany(
            cascade={CascadeType.ALL }, 
            fetch=FetchType.LAZY
    )   
    @JoinTable(name = "triple_has_annotation", 
            joinColumns={@JoinColumn(name="uri_concept_subject"), @JoinColumn(name="uri_concept_object"), @JoinColumn(name="uri_concept_predicate") },          
            inverseJoinColumns=@JoinColumn(name="annotation_id") )
    public List<Annotation> getAnnotations() {
        return annotations;
    }
    public void setAnnotations(List<Annotation> annotations) {
        this.annotations = annotations;
    }
    @Id 
    @Column(name = "subject", length = 100)
    public Concept getSubject() {
        return subject;
    }
    public void setSubject(Concept subject) {
        this.subject = subject;
    }

    @Id 
    @Column(name = "object", length = 100)
    public Concept getObject() {
        return object;
    }
    public void setObject(Concept object) {
        this.object = object;
    }
    @Id 
    @Column(name = "predicate", length = 100)
    public Concept getPredicate() {
        return predicate;
    }
    public void setPredicate(Concept predicate) {
        this.predicate = predicate;
    }
正确的

@RelatedTo(type = "conceptUriSubject", elementClass = (Class<? extends NodeBacked>) Concept.class)
安装在eclipse中的软件
Spring数据使用一些编织技巧(aspectJ)来生成类。您必须在pom中添加一些插件,如

请使用此更新站点在eclipse IDE中安装AspectJ插件:

然后,您应该能够使用上下文菜单为您的项目启用AspectJ支持

您的域类将得到增强,以实现NodeBacked接口,这样IDE就不会在注释或其他地方给您任何错误

很抱歉给你带来了困惑。我们将在下一版本中解决这些问题

更新:

很抱歉,我之前没有注意到,但您在elementClass中引入的概念实际上是一个接口,因为它既没有使用@NodeEntity注释,也没有扩展NodeBacked,这才是真正的问题

我想你在春天也问了这个问题,下面是我的建议:

您的概念是一个接口,现在不扩展NodeBacked

通常:NodeBacked接口被添加到具有@NodeEntity注释的类中

那么您可以尝试相同的解决方案

  • 也可以用@NodeEntity注释概念
  • 或者让概念扩展节点自行扩展

重要提示:elementClass应该参考具体的实现(虽然这可能与接口一起工作,因为它只是用于检查与目标的兼容性)。

我刚刚编辑了我的问题,显示了我在pom.xml上的插件我之前留下的是exec maven插件和maven idea插件。但是上传dependencies后的错误是一样的。你使用的是idea插件(maven idea plugin),但是你需要的eclipse pluginI已经安装在eclipse中,使用帮助安装新软件,添加你说的站点,但是我仍然有同样的错误。我添加了一个安装在EclipseIDE上的软件截图。谢谢,我想将它设置为与maven一起使用,而不仅仅是在eclipse中。因此,我遵循了文档(我认为您是作者之一)和20.1.3中的内容,但我甚至不能制作一个包。我已经意识到我可以编译这个项目,即使有这些错误。这有点令人担忧,但至少不会妨碍工作
@RelatedTo(type = "conceptUriSubject", elementClass = Concept.class)
@RelatedTo(type = "conceptUriSubject", elementClass = (Class<? extends NodeBacked>) Concept.class)
<plugins>
          <plugin>
            <!-- Execute the main class -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>exec</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <mainClass>org.springframework.data.neo4j.examples.hellograph.App</mainClass>
            </configuration>
          </plugin>
          <plugin>
            <!-- IntelliJ Idea Support -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-idea-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <downloadSources>true</downloadSources>
              <dependenciesAsLibraries>true</dependenciesAsLibraries>
            </configuration>
          </plugin>



            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <version>1.0</version>
                <dependencies>
                    <!-- NB: You must use Maven 2.0.9 or above or these are ignored (see 
                        MNG-2972) -->
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjrt</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjtools</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outxml>true</outxml>
                    <aspectLibraries>
                        <aspectLibrary>
                            <groupId>org.springframework</groupId>
                            <artifactId>spring-aspects</artifactId>
                        </aspectLibrary>
                        <aspectLibrary>
                            <groupId>org.springframework.data</groupId>
                            <artifactId>spring-data-neo4j</artifactId>
                        </aspectLibrary>
                    </aspectLibraries>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>

        </plugins>