0
如果有人能幫我解決這個問題,我將非常感謝 ,因爲我已經花了很多時間。如何鏈接數據存儲和文檔使用密鑰
我的應用程序的前端發送員工數據到服務器端, 它創建Emmployee對象並將數據保存在數據存儲上。我的 應用程序在title, 公司和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);
}
}
非常感謝Andrei :) – Rizvi
我的回答很有幫助,你可以簡單地接受它。這是在StackOverflow上說「謝謝」的標準方式:) –