Java @RelatedTo(elementClass=Concept.class)RelatedTo.elementClass必须是类
阅读本文后,我尝试以以下方式应用我的代码: TripleJava @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
@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>