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

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

如何正确插入?

最佳答案

您确定插入了该值吗?我问,因为据我所知,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/

相关文章:

在本地资源上同步期间的 Java 死锁?

mysql - 获取包含在表中找到最少次数的项目的列表

mysql - Laravel 一对多(逆)/属于返回 null

java - Hibernate递归查询

java - Java8 上的命名参数

Java:装饰器模式 - 对主要抽象类的引用

java - 如何在 JPanel 及其子项上设置工具提示?

java - 使用 session 将参数发送到 Liferay Portlet

mysql - DataAdapter 缺少记录

java - JPA hibernate : An entity copy [xxx] was already assigned to a different entity [yyyyy]