我正在上述应用服务器上的一个非常旧的旧系统上工作。
下面的delete语句正在正确执行,但是在特定环境下,未包装的连接为空。
我已经在连接良好的单实例开发服务器上测试了以下代码。
在集成环境中,返回的连接始终为空。
有没有人有一个好的策略来尝试确保连接不为空。
以下方法由带有@TransactionAttribute(REQUIRES_NEW)
的外部方法调用。下面的属性是出于绝望而添加的,但似乎仍然没有作用。
显然存在事务,因为其他方法的所有语句都被调用,并且下面的删除看起来都可以。在unwrap
时失败了。
@Stateless
public class Repository {
@TransactionAttribute
public void addOrdersToFile(PimaTaisFileBE file) throws SQLException {
int affected = em.createQuery("DELETE FROM PimaTaisRequestIndexFileBE rf WHERE rf.pimaTaisFile = :file")
.setParameter("file", file)
.executeUpdate();
Connection connection = em.unwrap(Connection.class);
if (connection == null)
throw new IllegalStateException("connection == null after unwrap in addPimaOrdersToFile");