gpt4 book ai didi

java - dynamodb java 多对一

转载 作者:行者123 更新时间:2023-12-02 12:00:30 24 4
gpt4 key购买 nike

我想尝试一下 dynamodb

我能够保存单个对象。现在我想尝试创建一个多对一的关联。

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

@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 以正确的方式做到这一点

谢谢!

最佳答案

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

@DynamoDBDocument
public class Task {

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

关于java - dynamodb java 多对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com