2017-07-23 26 views
0

我想我的项目转移到Spring Boot 2.0.0.M2春引导2.0.0.M2 /春数据和findById方法

现在春天到数据应用Optional为findBy *方法,如:

Optional<T> findById(ID id); 

我有包含id属性Neo4j的实体,例如:

@NodeEntity 
public class Tag { 

    private Long id; 

} 

@Repository 
public interface TagRepository extends Neo4jRepository<Tag, Long> 

    Tag findById(Long tagId); 

} 

id是一个普通的财产,而不是与实体IDENTIF IER(PK)。

春节前启动2.0我为了查找实体通过它的标识符(PK)和我,以便通过其id财产查找实体定制repository.findById()使用repository.findOne()嵌入方法。

现在使用Spring Boot 2.0,我们没有findOne,取而代之的是findById方法通过PK查找实体。现在我不知道如何提供我自定义的repository.findById方法,我为了能够通过ID属性(不是PK)查找实体。请指教。

+1

你就不能写的另一种方法,用'@ Query'注释呢?或者只是做正确的事情,并将您的id属性重命名为不太混乱的东西,因为它不是ID? –

回答

1

如果该字段tagId在实体存在,你可以使用

Tag findByTagId(long tagId); 

如果不使用

@Query("select t from Tag t where t.tagId = :tagId") 
Tag getByTagId(@Param("tagId") long tagId); 
+0

你确定'findById'没有'@ Query'声明在Spring Data Neo4j中做同样的事情,比如'@Query(“MATCH(t:Tag))其中t.id = {tagId} RETURN t”)'? – alexanoid

+0

这是findByTagId在我的代码中@alexanoid – baao

+0

在'TagRepository'中,'getById'(没有'@ Query' over)而不是'findById'完成了诀窍。 – alexanoid