【发布时间】:2017-08-03 20:36:06
【问题描述】:
我正在尝试使用 spring data elasticsearch 将我的实体保存在 elasticsearch 中,所有属性都被保存(包括对象),除了 enum 它始终存储为 null,这是我的实体
@Entity
@Document(indexName="invoices", type="invoices", shards = 1)
public class Invoice {
@Transient
@JsonIgnore
@org.springframework.data.annotation.Id
private String searchIndex;
@Field(type = FieldType.String)
private InvoiceStateEnum state;
带有和不带@Field 属性的状态被保存为空,即使正在保存的对象具有此枚举的值。
感谢任何帮助
【问题讨论】:
-
我使用枚举的方式完全相同(
@Field(type = FieldType.String)用于 ES v2.x 或@Field(type = FieldType.text)用于 ES v5.x)并且它们被保存到 elasticsearch 中没有任何问题。您是否尝试过调试代码并在调用 invoceRepository.save(invoiceDocument) 的位置设置断点并检查state是否设置正确?也许在保存之前发生了一些不好的事情? -
你使用的是spring data elasticsearch?
-
是的,我正在使用 spring data elasticsearch。
-
你用的是什么版本?
-
我能够在两个环境中重现正确的行为:ES v2.4.1 => spring-boot-starter-data-elasticsearch/1.4.5.RELEASE 和 ES v5.4.1 => spring- boot-starter-data-elasticsearch/2.0.0.M2
标签: java spring spring-boot enums spring-data-elasticsearch