Jackson ObjectMapper を使用してアイテムを「Student」に変換するのに少し問題があります。フロントから送信された id-parameter に基づいて、実際に適切なアイテムを取得する方法を取得しました。これは機能するメソッドですが、機能するかどうかをテストしたかっただけなので、何も返しません。
AWS サービス:
public void getStudent(String id){
Table t = db.getTable(studentTableName);
GetItemSpec gio = new GetItemSpec()
.withPrimaryKey("id", id);
Item item = t.getItem(gio);
System.out.println("Student: "+item); // <--- Gives the correct item!
}
しかし、今は「Student」を返す必要があるため、void ではなく Student を返す必要があります。
public Student getStudent(String id){
Table t = db.getTable(studentTableName);
GetItemSpec gio = new GetItemSpec()
.withPrimaryKey("id", id);
Item item = t.getItem(gio);
//Problem starts here, unsure of how to do. As is, getS() is underlined as error
Student student = mapper.readValue(item.get("payload").getS(), Student.class);
return student;
}
参考までに、すべての生徒を取得するための作業方法を追加します。ご覧のとおり、すべての学生を取得するメソッドと同じ mapper.readValue を使用しようとしました。
public List<Student> getStudents() {
final List<Student> students = new ArrayList<Student>();
ScanRequest scanRequest = new ScanRequest()
.withTableName(studentTableName);
ScanResult result = client.scan(scanRequest);
try {
for (Map<String, AttributeValue> item : result.getItems()) {
Student student = mapper.readValue(item.get("payload").getS(), Student.class);
students.add(student);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return students;
}