gpt4 book ai didi

java - 使用 EJB 2.0 和 JPA (Toplink) 问题存储和刷新对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:26 25 4
gpt4 key购买 nike

在我的客户端应用程序中,我想在一个 EJB 方法中调用存储和刷新,而不是对两个方法进行两次调用。我做了一个 EJB 方法,让它调用其他两个 EJB 方法,它看起来很简单,像这样:

 public ZippedObjectWrapper saveAndRefresh(final Item p_item) {
Long itemSavedId= save(p_item);
return refresh(itemSavedId);
}

问题是 Toplink 不允许我读取数据并且在刷新部分抛出异常:

异常 [TOPLINK-7123]异常描述:在此 UnitOfWork 上调用了成功的 writeChanges()。由于提交过程已经开始但尚未完成,现在唯一支持的操作是提交、commitAndResume、发布、任何非对象级查询或 SQLCall 执行。此时不允许执行 executeQuery(ObjectLevelReadQuery) 操作。

有什么建议吗?

编辑:更改方法签名。

最佳答案

不确定您的 save() 方法的作用,但我假设您正在调用 UnitOfWork 上的 writeChanges()。在您使用的版本中,在 writeChanges() 之后不允许查询。删除 writeChanges() 应该可以解决问题。

如果升级到 EclipseLink 和 JPA,则可以在一个事务中多次使用 flush() 并在之后进行查询。您也可以手动使用 RepeatableWriteUnitOfWork 而不是 UnitOfWork 来启用对 writeChanges() 的多次调用并允许查询。

关于java - 使用 EJB 2.0 和 JPA (Toplink) 问题存储和刷新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5270901/

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