【问题标题】:Storing username that last modified database row via EJB3.0 and JPA通过 EJB3.0 和 JPA 存储最后修改数据库行的用户名
【发布时间】:2010-10-09 18:15:12
【问题描述】:

我想将上次修改表行的用户名存储为每个表中的字段。

我有以下设置:用户登录,Web 层调用一些 EJB 3.0 bean。这些 EJB bean 创建和修改一些 JPA 实体。 现在,我希望将用户名(来自 weblayer)自动存储到在 EJB 方法调用期间创建或修改的每个 JPA 实体(和数据库行)。

我有这种表,(即:每张表都有字段修饰符):

CREATE TABLE my_table (
  some_data INTEGER,
  modifier VARCHAR(20)
);

自动我的意思是,我不需要为 EJB 方法中的每个实体手动设置用户名。

您可以通过将用户名存储到 ThreadLocal 变量并从 JPA 实体的 EntityListener 中的 ThreadLocal 获取用户名来实现此目的。 但是,这只适用于您使用本地 EJB 调用,它不适用于跨 JVM 边界的 EJB 调用。我想通过远程 EJB 方法调用来完成这项工作。

这可能吗?

我正在使用 Weblogic Server 10.3、EJB3.0 和 EclipseLink JPA。我也有兴趣了解这是否适用于其他 JPA 实现。

【问题讨论】:

    标签: database jpa ejb-3.0 weblogic


    【解决方案1】:

    您可以在 EJB 类上使用 EJB 拦截器 (@Around) 来获取当前用户(使用标准 EJB api)并将名称存储在 threadlocal 变量中。这将对远程和本地调用透明地工作。

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 2012-03-16
      • 2021-11-07
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      相关资源
      最近更新 更多