dynamodb java多对一

时间:2017-11-14 10:18:25

标签: java amazon-dynamodb

我想尝试使用dynamodb

我能够保存一个Object。 现在我想尝试创建一个多对一的协会。

许多任务可以附加到单个用户。

@DynamoDBTable(tableName = "User")
public class User {
    private String id;
    List<Task> tasks = new ArrayList<Task>();

    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    public String getId() {
        return id;
    }

    @DynamoDBAttribute
    public List<Task> getTasks() {
        return this.tasks;
    }

    public void setTasks(List<Task> taskMap) {
        this.tasks = taskMap;
    }

    public void addTask(Task task){
        this.tasks.add(task);
    }
}

@DynamoDBTable(tableName = "Task")
public class Task {
    private String id;
    private String name;

    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    public String getId() {
        return id;
    }

    public Task(String name) {
        this.name = name;
    }

    @DynamoDBAttribute
    public String getName(){
        return this.name;
    }

    public void setname(String name){
        this.name = name;
    }
}

现在我正在尝试使用相应的任务保存用户

Task task1 = new Task("test");
Task task2 = new Task("test2");
User user = new User();
user.addTask(task1);
user.addTask(task2);
userRepository.save(user);

我知道它不会像这样工作,但也许有人可以给我一个如何做的例子。

在关系数据库世界中,表格看起来像这样

User
id|.....

Task
id|name

User_Tasks
user_id|task_id

但是如何用dynamodb以正确的方式做到这一点

谢谢!

1 个答案:

答案 0 :(得分:1)

我希望您在单个DynamoDB表(即User)中保存用户和任务。请使用@DynamoDBDocument而不是@DynamoDBTable注释任务类。

@DynamoDBDocument
public class Task {

}
  • 相应地添加getter / setter和一个空构造函数