gpt4 book ai didi

java - 如何使用@PersistenceContext 注解的 `properties` 属性?

转载 作者:行者123 更新时间:2023-11-29 09:06:23 27 4
gpt4 key购买 nike

我在我的类中定义了两个实体管理器实例,其中一个覆盖了 PersistenceContextproperties 属性,而另一个则没有:

@PersistenceContext
protected EntityManager em;

@PersistenceContext(properties={@PersistenceProperty(name="hibernate.default_schema", value="archive")})
protected EntityManager emArchive;

我这样做是为了定义一个实体管理器附加到我的默认架构,另一个实体管理器附加到我的存档架构。

这是我的 persistance.xml:

<persistence-unit name="primary" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/PCMain_DS</jta-data-source>

<properties>
<!-- Properties for Hibernate -->
<!-- property name="hibernate.hbm2ddl.auto" value="update" /-->
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>

不幸的是,我的程序似乎无法正常工作,因为当我使用存档实体管理器 (emArchive) 保存实体时,它会保存到默认的公共(public)架构中。似乎没有设置属性 hibernate.default_schema - 但为什么呢?我如何切换模式?

我的工具/环境:

  • JBoss 7.1
  • EJB
  • JPA
  • hibernate

感谢所有帮助,谢谢。

最佳答案

还有其他方法可以做到这一点,但这里有一种选择:

  1. 在 persistence.xml 中定义两个元素
  2. 对于定义的每个持久性单元,使用元素指定针对每个持久性单元的实体的名称

这应该负责在每个持久性单元中持久存在的实体的隔离。

关于java - 如何使用@PersistenceContext 注解的 `properties` 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14776346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com