如何在指定的索引处插入值?

时间:2017-08-09 22:16:15

标签: java mysql hibernate

我有父表和子表,有一对多的关系:

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脚本有问题?

如何正确插入?

1 个答案:

答案 0 :(得分:1)

你确定是否插入了值?我问,因为据我所知,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)。