Playframework 更新被替换的OneToMany ArrayList';s级联实体的对象
我正在使用PlayFramework 2.2.1/Java/Ebean/MySQLPlayframework 更新被替换的OneToMany ArrayList';s级联实体的对象,playframework,ebean,Playframework,Ebean,我正在使用PlayFramework 2.2.1/Java/Ebean/MySQL Thera分为两类(实体): 我做错了什么?你做的一切都对。 如果要更新某些内容,需要加载、修改和保存。 如果要添加某些内容,请创建新对象并保存它 可以查看对象的@Id值,而不是列表中对象的索引。如果对象没有id,Ebean将在表中创建新记录 也许,如果您创建具有相同id的新对象,Ebean将更新它。为埃克斯梅普 Item item3 = new Item(); item3.id = cart.items.get
Thera分为两类(实体):
我做错了什么?你做的一切都对。 如果要更新某些内容,需要加载、修改和保存。 如果要添加某些内容,请创建新对象并保存它 可以查看对象的@Id值,而不是列表中对象的索引。如果对象没有id,Ebean将在表中创建新记录 也许,如果您创建具有相同id的新对象,Ebean将更新它。为埃克斯梅普
Item item3 = new Item();
item3.id = cart.items.get(1).id;
item3.name = "Apple";
但是1)我不能告诉你它是否有效2)它是真的黑客,你真的不需要使用它
如果要修改
项中的对象,需要加载并修改加载的对象,这是正确的方法。我也遇到过类似的问题,但发现解决方案是使用setter来更改值,而不是直接访问字段。我假设在方法中注入了一些魔力来通知子系统对象的变化,允许更新等等
是的,我会像这样编写原始示例(假设数据库事先是空的):
希望有帮助
Cart cart = new Cart();
Item item1 = new Item(); item1.name = "Banana";
Item item2 = new Item(); item2.name = "Peach";
cart.items = new ArrayList<Item>();
cart.items.add(item1);
cart.items.add(item2);
cart.save();
Cart cart = Cart.find.all().get(0);
cart.items.get(0).name="Orange"; //updates perfectly
Item item3 = new Item(); item3.name = "Apple";
cart.items.set(1, item3); //adds additional third record
cart.update();
Item item3 = new Item();
item3.id = cart.items.get(1).id;
item3.name = "Apple";
Cart cart = new Cart();
Item item1 = new Item(); item1.setName("Banana");
Item item2 = new Item(); item2.setName("Peach");
cart.items = new ArrayList<Item>();
cart.items.add(item1);
cart.items.add(item2);
cart.save();
Cart cart = Cart.find.all().get(0);
Item item1 = cart.items.get(0);
item1.setName("Orange");
Item item2 = cart.items.get(1);
item2.setName("Apple");
cart.update();
Item item2 = new Item();
item2.setId(1); // this way Ebean will do the update
item2.setName("Apple");
cart.update();