整整折騰了三天,終於把spring boot + neo4j的路走通了。java
這裏介紹3個部分,pom,entity,repositoryspring
1)pomapache
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.project</groupId> <artifactId>knowledge</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>Maven Webapp</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.0.RELEASE</version> </parent> <properties> <java.version>1.7</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-neo4j</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.bonc.knowledge.Startup</mainClass> </configuration> </plugin> </plugins> </build> </project>
2)entityjson
import java.util.HashSet; import java.util.Set; import org.neo4j.graphdb.Direction; import org.springframework.data.neo4j.annotation.Fetch; import org.springframework.data.neo4j.annotation.GraphId; import org.springframework.data.neo4j.annotation.Indexed; import org.springframework.data.neo4j.annotation.NodeEntity; import org.springframework.data.neo4j.annotation.RelatedTo; import org.springframework.data.neo4j.support.index.IndexType; @NodeEntity public class WordEntity { @GraphId Long id; // @Indexed(unique = true,indexType = IndexType.FULLTEXT, indexName = "wordName") private String name; private String domain; private String dict; private String pos; @RelatedTo(type = "labeled") Set<LabelEntity> labels = new HashSet<LabelEntity>(); public WordEntity(){ } public WordEntity(String name){ this.name = name; } public Long getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPos() { return pos; } public void setPos(String pos) { this.pos = pos; } public Set<LabelEntity> getLabels() { return labels; } public void setLabels(Set<LabelEntity> labels) { this.labels = labels; } public String getDict() { return dict; } public void setDict(String dict) { this.dict = dict; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } @Override public String toString() { return "WordEntity [id=" + id + ", name=" + name + "]"; } }
3)repositoryapp
import java.util.List; //import org.springframework.data.neo4j.annotation.Query; //import org.springframework.data.neo4j.repository.GraphRepository; //import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RepositoryRestResource; //import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository; import com.bonc.knowledge.model.WordEntity; @RepositoryRestResource(collectionResourceRel = "word", path = "word") @Repository public interface WordRepository extends PagingAndSortingRepository<WordEntity, Long> { List<WordEntity> findByName(@Param("name") String name); }