将实体绑定到具有 2 个数据源的特定持久性单元
Binding entity to a specific persistence-unit with 2 datasource
我在 persistence.xml
中有两个持久性单元,在 standalone.xml
中有两个数据源,但我无法将 table A 绑定到持久性 1 并将 table B 绑定到持久性2
像这样
<persistence-unit name="itsetup-persistence-unit-dev1" transaction-type="JTA">
<description>Forge Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/itsetup-dev1</jta-data-source>
...
<persistence-unit name="itsetup-persistence-unit-dev3" transaction-type="JTA">
<description>Forge Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/itsetup-dev3</jta-data-source>
<class>my.package.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
...
和
<datasource jndi-name="java:/itsetup-dev3" pool-name="itsetup-dev3" enabled="true" use-java-context="true">
<connection-url>jdbc:informix-sqli://server:9991/database</connection-url>
<driver-class>com.informix.jdbc.IfxDriver</driver-class>
<driver>ifxjdbc.jar</driver>
<security>
...
这是我的用户模型
@Entity
@PersistenceContext(unitName = "itsetup-persistence-unit-dev3")
@Table(name = "user_file")
public class User {
我的用户服务
@PersistenceContext(unitName = "itsetup-persistence-unit-dev3")
private EntityManager em;
课程 table 是
@Entity
@PersistenceContext(unitName = "itsetup-persistence-unit-dev1")
@Table(name = "ppp_course")
public class Course {
和我的课程服务
@PersistenceContext(unitName = "itsetup-persistence-unit-dev1")
private EntityManager em;
但是当我 运行 服务器时,它总是生成其他 table 到 dev3 数据库,就像它没有查看 dev1 数据库一样 Table not found: ppp_course
我该如何解决这个问题?
从 <persistence-unit name="itsetup-persistence-unit-dev3" transaction-type="JTA">
中删除 <property name="hibernate.archive.autodetection" value="class" />
。但是必须失去自动检测功能。
我在 persistence.xml
中有两个持久性单元,在 standalone.xml
中有两个数据源,但我无法将 table A 绑定到持久性 1 并将 table B 绑定到持久性2
像这样
<persistence-unit name="itsetup-persistence-unit-dev1" transaction-type="JTA">
<description>Forge Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/itsetup-dev1</jta-data-source>
...
<persistence-unit name="itsetup-persistence-unit-dev3" transaction-type="JTA">
<description>Forge Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/itsetup-dev3</jta-data-source>
<class>my.package.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
...
和
<datasource jndi-name="java:/itsetup-dev3" pool-name="itsetup-dev3" enabled="true" use-java-context="true">
<connection-url>jdbc:informix-sqli://server:9991/database</connection-url>
<driver-class>com.informix.jdbc.IfxDriver</driver-class>
<driver>ifxjdbc.jar</driver>
<security>
...
这是我的用户模型
@Entity
@PersistenceContext(unitName = "itsetup-persistence-unit-dev3")
@Table(name = "user_file")
public class User {
我的用户服务
@PersistenceContext(unitName = "itsetup-persistence-unit-dev3")
private EntityManager em;
课程 table 是
@Entity
@PersistenceContext(unitName = "itsetup-persistence-unit-dev1")
@Table(name = "ppp_course")
public class Course {
和我的课程服务
@PersistenceContext(unitName = "itsetup-persistence-unit-dev1")
private EntityManager em;
但是当我 运行 服务器时,它总是生成其他 table 到 dev3 数据库,就像它没有查看 dev1 数据库一样 Table not found: ppp_course
我该如何解决这个问题?
从 <persistence-unit name="itsetup-persistence-unit-dev3" transaction-type="JTA">
中删除 <property name="hibernate.archive.autodetection" value="class" />
。但是必须失去自动检测功能。