我想使用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
放在一个字段上,一切正常。
答案 0 :(得分:3)
@Id
注释适用于属性,即您可以将其放在getter,setter或字段上。如果这不起作用,那就错了。可能的原因是:
@Id
注释它不适用于任意方法,因为Spring Data无法确定该非属性的名称,而这又是许多功能所必需的。