如何使用@PersistenceContext注释的`properties`属性?

时间:2013-02-08 15:51:26

标签: java hibernate jpa ejb jboss7.x

我在我的班级中定义了两个实体经理实例,其中一个实体覆盖properties的{​​{1}}属性,另一个不覆盖:{/ p>

PersistenceContext

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

这是我的persistance.xml:

@PersistenceContext
protected EntityManager em;

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

不幸的是,我的程序似乎没有工作,因为当我使用存档实体管理器(emArchive)保存实体时,它会保存到默认的公共模式。似乎属性<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> 没有设置 - 但为什么?我如何切换架构?

我的工具/环境:

  • JBoss 7.1
  • EJB
  • JPA
  • 休眠

所有帮助表示感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

可以有其他方法来做,但这里有一个选择:

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

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