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

标签 java hibernate jpa ejb jboss7.x

我在我的类中定义了两个实体管理器实例,其中一个覆盖了 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/

相关文章:

java - hibernate中的save方法没有立即插入

hibernate - 在 tomcat 中创建名称为 'dataSource' 的 bean 时出错

java - 当我使用 ddl-auto=create 时,JPA/hibernate 未生成其中一张表

jpa - 使用JPA的数据库爬虫

java - NetBeans Profiler - 未显示实时结果

java - 如何更新文本框以便它可以更改金额?

java - 在运行时更改 hibernate 索引位置(lucene)时,索引未存储在新位置

java - 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

java - println 方法中的 true/false boolean 值

java - 我如何将 boolean 值传递给新对象?