【发布时间】:2015-04-27 11:24:16
【问题描述】:
我开始使用 Spring Data Elasticsearch。 我读到:
类的属性之一需要是一个 id,或者通过 用 @Id 注释它或使用自动找到的名称之一 id 或 documentId。
但是当我用 @Id 标记我的项目实体字段 projectId 时,elasticsearch 仍然在说:
No id property found for class com.example.domain.entity.Project!
我发现我正在使用 JPA 包中的注释 @Id:javax.persistence.Id。当我为我的字段添加另一个 @Id 注释 @org.springframework.data.annotation.Id 时,从存储库中获取正在工作!
问题是我不想同时使用两种@Id 注释。此外,我只想使用 JPA 注释,因为其他模块正在使用基于 JPA 的存储库层(Spring Data JPA)。
Spring Data Elasticsearch 是否支持来自 JPA 的 @Id 注释?了解这一点非常重要,因为嵌入式 id 进一步如何? Spring Data Elasticsearch 是否支持 @EmbeddedId 注解?
我的实体:
@Entity
@Document(indexName = "project_list", type = "external")
public class Project implements Serializable {
@Id
@org.springframework.data.annotation.Id <-- without it Spring Data Elasticsearch is complaining that 'No id property found'
@Column(name = "PROJECT_ID")
private Long projectId;
.... other fields and getters/setters
}
【问题讨论】:
-
您找到解决方法了吗?我想你可以把 data.annotation.id 留在那儿吗?