gpt4 book ai didi

java - 使用 Hibernate 和 Spring MVC 在级联上保存包

转载 作者:行者123 更新时间:2023-12-01 10:55:52 25 4
gpt4 key购买 nike

我有以下父类

public class Parent {

private Integer id;
private List<Child> detail = ShrinkableLazyList.decorate(
new ArrayList<Child>(),
FactoryUtils.instantiateFactory(Child.class));

其对应的HBM如下:

<class name="Parent" table="parents">
<id name="id">
<generator class="increment"></generator>
</id>
<bag name="detail" cascade="all-delete-orphan">
<key column="parentId" not-null="true" />
<one-to-many class="Child" />
</bag>
</class>

在我的 JSP 编辑表单中,我列出了此详细信息,如下所示:

<c:forEach items="${ parent.detail }" var="child" varStatus="status">
<tr class="detail">
<td>
<input name="detail[${ status.count }].id" type="hidden" value="${ child.id }">
<input name="detail[${ status.count }].account" type="hidden" value="${ child.account.id }"><span>${ child.account }</span>
</td>
</tr>
</c:forEach>

但是当我尝试对父对象执行 update() 时,我收到以下错误:

identifier of an instance of Child was altered from 20 to 19; nested exception is org.hibernate.HibernateException: identifier of an instance of Child was altered from 20 to 19

这是我的 DAO 代码

@Override
public void update (Parent parent) {
hibernateTemplate.update(parent);
}

有什么想法吗?谢谢

最佳答案

status.count 从 1 开始而不是从 0 开始存在问题,这会导致分配的值发生索引移位。

关于java - 使用 Hibernate 和 Spring MVC 在级联上保存包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com