我有具有一对多关系的父表和子表:
List<Child> list = new LinkedList<>("1","2","3","5","6");
我正在尝试这个:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Parent where id= :id");
query.setLong("id", parent_id);
Parent parent = (Parenr) query.uniqueResult();
List<Child> children = parent.getChildren();
children.set(2, "4");
session.update(parent);
tx.commit();
session.close();
但是将值插入到列表末尾
("1","2","3","5","6","4")
如果我在提交事务之前打印出列表,则列表的顺序正确:(“1”,“2”,“3”,“4”,“5”,“6”) 但事务提交后,该值会被插入到末尾。也许 SQL 脚本有问题?
如何正确插入?
最佳答案
您确定插入了该值吗?我问,因为据我所知,set() 允许您替换该索引中存在的值。
因此,如果您有 ("1","2","3","5","6")
并且执行 children.set(2,"4 ")
,现在您将拥有 ("1","2","4","5","6")
。
我建议使用 add() 并指定索引,如 children.add(2,"4")
,预期结果应为 ("1","2", “4”,“3”,“5”,“6”)
。
PD:我也不知道这是否会给您带来问题,但是当您执行 uniqueResult() 的转换时,您有(Parenr)并且应该是(Parent)。
关于java - 如何在指定索引处插入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45601467/