我有一个使用 openJPA 作为持久性管理的 Spring 3 应用程序,以下部分在 STS/Tomcat 中运行良好
@Transactional
createBalance(){
.....
Balance balance = new SummaryBalance();
balance.setName(name);
balance.setCurrency(currency);
balance.setClosingTimestamp(closingTime);
balance.setStatus(BalanceStatus.OPEN);
balance.persist(); // persist !!
......
balance.setCloseAmount(amount);
balance.setLastUpdateTimestamp(now);
}
但是,当在 websphere 7 中部署相同的代码时,closeAmount
andlastUpdate
不会更新(DB 中的两个字段都没有得到更新,但从日志中两个字段都可以通过它们的 getter 返回值)然后显示为 null,但之前更改为其他persist()
字段方法完成后生效。所以我敢打赌,当完成 WS 的方法没有刷新这些字段的更改时。
我认为 JPA(无论供应商如何)应该保持平衡实体对象的管理,persist()
并在方法完成后刷新对象并进行后续更改。事实证明 Websphere 7 没有成功。甚至我放了一个merge()
方法
balance.setCloseAmount(amount);
balance.setLastUpdateTimestamp(now);
balance.merge();
仍然没有帮助。
问题:
- OpenJPA 已经作为依赖项包含在部署中,但是为什么 websphere 还需要参与 JPA 管理呢?
- 如何解决问题?
提前致谢。