我有一个休眠对象, 我使用会话. save orUddate 来持续, 而不承诺使用该对象的代号。 我将对象代号传送到我的接口, 然后再用来重建提交对象。 当我提交表格时, 我不能再做会话查询来检索对象, 因为从技术上讲, 该对象在数据库中不存在 。
有人知道怎么取回那个对象吗?如果我刚刚创建了一个新对象, 数据库的代号会越发失控。 有什么想法吗?
问题编辑和澄清。
当提交表格并包含错误时,我需要抓取错误并用错误重新装入页面。我一直面临的问题是,我在收藏中丢失了未持续的数据。我的解决方案是暂时将当前对象与所有子对象一同持续到用户会话中,然后在重新加载页面后将持续对象复制回主对象,该页面将返回所有用户先前的数据。然而,我遇到了一个错误,无法对角色集进行 Lazic 初始化:这就是为什么我一直使用诸如会话. 更新这样的交易。这解决了这个问题,但在实际保存到数据库之前,先给新创建的对象以ID s 。
代码样本
@Property
private PurchaseRequest pr;
@Persist
private PurchaseRequest prPersist;
Class<?> onActivate(Long prId) {
if(request.isXHR()) {
return null;
}
PurchaseRequest purchaseRequest = null;
if(prPersist != null) {
session.update(prPersist);
purchaseRequest = prPersist;
prPersist = null;
} else {
purchaseRequest = (PurchaseRequest) session.createCriteria(PurchaseRequest.class)
.add(Restrictions.idEq(prId))
.uniqueResult();
}
this.pr = purchaseRequest;
}
审定方法
void onValidateFromPR() throws Exception {
if (form.getHasErrors()) {
prPersist = this.pr;
return Page.Index;
}
}