在方法上使用@Id

时间:2017-04-28 14:50:01

标签: spring-data spring-data-elasticsearch

我想使用Spring Data @Id注释一个方法,但它只适用于字段,尽管注释可用于方法。

有没有办法在方法上使用@Id

我使用的是Spring Boot 1.3.0.RELEASE

修改

实际上我有这个接口,它将在运行时创建一个实例。

import org.springframework.data.annotation.Id;

@Document(indexName = "index", type = "document")
public interface Document {

    @Id
    Integer getId();
}

这个存储库。

public interface DocumentRepository extends ElasticsearchCrudRepository<Document, Integer> {

}

问题是spring-data-elasticsearch 1.3.0.RELEASE中的SimpleElasticsearchPersistentProperty总是查找字段:  https://github.com/spring-projects/spring-data-elasticsearch/blob/1.3.0.RELEASE/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentProperty.java

这样,如果我创建一个asbtract类并将@Id放在一个字段上,一切正常。

1 个答案:

答案 0 :(得分:3)

@Id注释适用于属性,即您可以将其放在getter,setter或字段上。如果这不起作用,那就错了。可能的原因是:

  • 这些名称不符合财产惯例
  • 您使用了错误的@Id注释

它不适用于任意方法,因为Spring Data无法确定该非属性的名称,而这又是许多功能所必需的。