当前位置: 首页 > 知识库问答 >
问题:

在java EE 6中:什么时候可以更改EntityManager的属性?

裴俊雅
2023-03-14
@Stateless
public class Boundary {

    @PersistenceContext EntityManager em;

    @PostConstruct
    private void init()  {
        em.setProperty("eclipselink.oracle.proxy-type", OracleConnection.PROXYTYPE_USER_NAME);
        em.setProperty(OracleConnection.PROXY_USER_NAME, "pool[user_a]");
        em.setProperty(OracleConnection.PROXY_USER_PASSWORD, "pool");
        em.setProperty(OracleConnection.PROXY_ROLES, "pool_user");
        em.setProperty("eclipselink.jdbc.exclusive-connection.mode", "Always");
        em.setProperty("eclipselink.jdbc.exclusive-connection.is-lazy", "false");
    }

    public void save() {
        em.merge(new AnEntity());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="ProxyUserPU" transaction-type="JTA">
    <jta-data-source>SecondTry</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
      <property name="eclipselink.target-database" value="Oracle"/>
      <property name="eclipselink.jdbc.exclusive-connection.is-lazy" value="true"/>
    </properties>
  </persistence-unit>
</persistence>

共有1个答案

柳韬
2023-03-14

我不认为后构式是这个的正确位置。

每个事务边界上的持久性上下文都绑定了一个新的EntityManager,因此您需要在每个事务性SessionBean方法开始时设置这些属性。您可能还可以使用EclipseLink中的SessionEvents来配置属性。

如果属性是固定的,那么也可以将它们放在persistence.xml中。

 类似资料:
  • 代码B是一个定制的回收视图apater,带有单选按钮。 mCustomAdapter 在 Code A 中的 fun methodA() 和 fun methodB() 中都发生了变化,因此 的引用也发生了变化,这意味着 val 属性 mySelectedIndex 从不同的地址获取值。 在我看来,val属性不能更改,为什么应用程序不会导致错误? 代码A 代码B 被改进的 我觉得代码DD和代码EE

  • 问题内容: 我知道我可以使用serialVersionUID来控制类的版本。我读到我可以添加或删除字段,并且该类仍将兼容,它将仅使用默认值。 什么时候 必须 更改serialVersionUID? 问题答案: 当对类的结构进行不兼容的更改时,最好更改serialVersionUID字段的值。Java对象序列化规范中列出了不兼容更改的完整列表。 为了进一步扩展,对类的不兼容更改将阻止反序列化机制创建

  • 已弃用。这种方法本质上是不安全的。使用thread.Stop停止线程会导致它解锁它锁定的所有监视器(作为未检查的ThreadDeath异常向堆栈上传播的自然结果)。如果以前由这些监视器保护的任何对象处于不一致的状态,则损坏的对象将对其他线程可见,从而可能导致任意行为。stop的许多用法应该被简单修改某个变量以指示目标线程应该停止运行的代码所取代。目标线程应该定期检查这个变量,如果变量指示它要停止运

  • 问题内容: 在最近的项目中,我建议在测试工具代码中捕获RuntimeException并将其记录下来。该代码处理来自数据库的一系列输入,并且我不希望由于任何一个输入(空值,非法参数等)失败而导致测试停止。不用说,我的建议引起了热烈的讨论。 捕获任何一种RuntimeException是否可以接受?如果是,那么可以捕获RuntimeExceptions的其他方案还有哪些? 问题答案: 捕获此异常的原

  • 问题内容: 有效的Java建议我们不要这样做 。总是对的吗? 在许多情况下,仅捕获身体。 如果我不接听电话,如何检查发生的地点? 而且,如果我抓住了但身体空了,那我们那时就无法获得任何堆栈信息,可以吗? 更新 我分析了在Google Android源AOSP4.2.2_r1.2中捕获RuntimeException的统计信息。 有249个RuntimeException捕获,并且以下是catch-

  • 这是java语言。我试图在这里搜索这个问题的答案,但找不到足够的答案,所以如果这是重复的,我很抱歉。我对改变输入参数的方法背后的规则感到困惑。例如,考虑下面的例子 这表明a[0]是105,a[1]是10,因此在messWithArray方法中使数组[0]等于100并加上5会产生效果。然而,分配array=array2没有做任何事情(因为[1]是10)。我还尝试过处理int,但没能让它工作。 我想更