我有一个要从数据库中检索并显示给用户的名称列表,然后用户可以编辑它们或保持不变。
我想知道如何实现它以将新值与检索到的值进行比较。
让我们说值如下
ID Value
--------
1 Jack
2 Daniel
3 Allen
4 Nick
一旦向用户显示,他/她就会将其更改为
ID Value
--------
1 Jack Moore //moore is added
2 Alex //value is totally changed
3 //value is erased
4 Nick //unchanged
现在我需要更新前两项的值,从数据库中删除第三项,因为它的新值为空,并保留最后一项。
@Entity
Class Names {
@Id
@GeneratedValue
private long id;
private long value;
...
}
@Entity
class Students {
@Id
@GeneratedValue
private long id;
@ManyToOne
private Names name;
}
我可以考虑将值列表放在cookie中,并将cookie的值与新值进行比较,但不确定这是否是解决问题的最佳方法。
答案 0 :(得分:0)
假设您已更新名称列表:
List<Names> namesList = new ArrayList<Names>();
Names name = new Names();
name.setId(1);
name.setValue("Jack Moore");
namesList.add(name );
name = new Names();
name.setId(2);
name.setValue("Alex");
namesList.add(name );
name = new Names();
name.setId(4);
name.setValue("Nick");
namesList.add(name );
将此列表直接发送到JPA会话并调用更新。更新将自动处理创建/更新/删除操作。
session.update(namesList);
因此,最后您将只在db表中看到以下记录:
ID Value
--------
1 Jack Moore
2 Alex
4 Nick