我目前正在将我使用Hibernate从Spring Data做的项目转换为使用ElasticSearch的Spring Data。
之前,我能够使用注释@GeneratedValue(strategy = GenerationType.IDENTITY)
自动生成我的实体的ID。这样,当保存实体时,会为其生成一个id号。
但是,我似乎无法找到ElasticSearch用来实现相同结果的注释。
使用Hibernate注释的实体:
@Entity
@Table(name = "person")
public class Person {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
public long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
是否存在与@GeneratedValue注释等效的ElasticSearch?如果不是,使用ElasticSearch时填充id字段的最佳方法是什么?
答案 0 :(得分:0)
https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#search-mapping-entity上的文档似乎确实表明@GeneratedValue
应该正常运行。您使用的是正确的集成库吗?
答案 1 :(得分:0)
我遇到了同样的问题并使用此代码解决了它:
@Entity
@Table(name = "person")
public class Person {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@GeneratedValue(generator="generator")
@org.springframework.data.annotation.Id
private long id;