EJB - EJBTransactionRolledbackException 参数类型不匹配 - 重载方法

EJB - EJBTransactionRolledbackException argument type mismatch - overloaded method

我真的需要一些帮助!通过调用具有方法重载的 EJB,我遇到以下异常:javax.ejb.EJBTransactionRolledbackException:参数类型不匹配

有趣的是,这种情况是随机发生的,而且只发生在这个重载方法中。请参阅以下结构:

// superclass
public abstract class GenericService<T> {

    public void update(T object) throws Exception {
        // some logic
    }

}

// subclass
@Stateless
public class TableService extends GenericService<Table> implements ITableService {

    @Override
    public void update(Table table) throws Exception {
        /*
         * some logic
         */

        // call super
        super.update(table);
    }
}

如果我调用包含 super.update(table) 语句的 TableService.update,发生错误。但是,如果我从 TableService.update 中删除 super.update(table) 语句,则直接调用 DAO (跳过 super),有效。

更糟糕的是,这种情况并不经常发生。只有当我有时重新启动 jboss wildfly 时。

显然没有任何问题,应该完全包含 super.update(table) 语句。你能帮忙吗?

容器 (JBOSS) 提供的 EJB 代理为具有 Object 类型的相应方法传递参数。 因此,如果有重载方法,代理可能无法解析要调用的方法

    @Stateless
public class TableService extends GenericService<Table> implements ITableService {

    @Override
    public void update(Table table) throws Exception {
        /*
         * some logic
         */

        // call super
        super.update(table);
    }

    @Override
    public void update(List<Table> table) throws Exception {
        /*
         * some logic
         */

        // call super
        super.update(table);
    }
}

proxy.update(Object obj)... 参数类型不匹配