如果有人能帮助我解决这个问题,我将非常感激 因为我已经花了很多时间。
我的应用程序的前端将员工数据发送到服务器端, 它创建Emmployee对象并将数据保存在数据存储区中。我的 应用程序在标题上提供关键字搜索功能, 公司和jobDesc所以我正在使用Search Api。
问题是我想使用数据存储来存储完整的数据存储 用于存储可搜索数据的数据和文档。我该如何链接 数据存储与文档?我知道如果我设置员工就可以实现 键作为文档ID,但问题是如何获取密钥 正在存储的数据。如果我尝试使用e.getKey()来获取密钥 显然会返回nullPointerException,因为它确实有键 那个时候。
我可以通过读取存储在数据存储区中的所有员工数据来实现此目的 用它创建文档并将员工的密钥设置为文档 id但我想创建文档,因为从前端收到数据 申请。
//EmployeeServlet
PersistenceManager pm = PMF.get().getPersistenceManager();
Employee e = new Employee(title, company, location, category,
jobType, gender,
careerLevel, salaryRange,
sector, jobDesc);
Document newDoc = Document.newBuilder().setId(???)
.addField(Field.newBuilder().setName("title").setText(title))
.addField(Field.newBuilder().setName("company").setText(company))
.addField(Field.newBuilder().setName("jobDesc").setText(jobDesc)).build();
SearchIndexManager.INSTANCE.indexDocument("Employee", newDoc);
pm.makePersistent(e);
//Employee
@PersistenceCapable
public class Employee {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String title;
@Persistent
private String company;
@Persistent
private String location;
@Persistent
private String category;
@Persistent
private String jobType;
@Persistent
private String gender;
@Persistent
private String careerLevel;
@Persistent
private String salaryRange;
@Persistent
private String sector;
@Persistent
private Text jobDescription;
public Employee(String title, String company, String location,
String category,
String jobType, String gender,
String careerLevel, String salaryRange,
String sector,
String jobDescription) {
super();
this.title = title;
this.company = company;
this.location = location;
this.category = category;
this.jobType = jobType;
this.gender = gender;
this.careerLevel = careerLevel;
this.salaryRange = salaryRange;
this.sector = sector;
this.jobDescription = new Text(jobDescription);
}
}
答案 0 :(得分:2)
这两个步骤都可以在同一个服务器调用中完成。只需在创建文档之前移动makePersistent()即可。