2016-05-16 3 views
0

настойчивость У меня проблемы с «работать с несколькими базами данных» в Spring MVC - спящий режим JPASpring MVC базы данных несколько объектов

У меня есть две базы данных, называемых user_db и portal_db. Мне нужно работать с ними в разных подразделениях jpa.

вот мой persistance.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<persistence 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_1_0.xsd" version="1.0"> 

    <persistence-unit name="user_unit" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>Package.Entity1</class> 

     <properties> 
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/user_db" /> 
      <property name="hibernate.connection.useUnicode" value="true" /> 
      <property name="hibernate.connection.characterEncoding" value="UTF-8" /> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> 
      <property name="hibernate.connection.username" value="postgres" /> 
      <property name="hibernate.connection.password" value="" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect" /> 
      <!--<property name="hibernate.hbm2ddl.auto" value="create-drop" />--> 
      <property name="hibernate.hbm2ddl.auto" value="validate" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 
     </properties> 
    </persistence-unit> 

    <persistence-unit name="portal_unit" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>Package.Entity2</class> 

     <properties> 
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/portal_db" /> 
      <property name="hibernate.connection.useUnicode" value="true" /> 
      <property name="hibernate.connection.characterEncoding" value="UTF-8" /> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> 
      <property name="hibernate.connection.username" value="postgres" /> 
      <property name="hibernate.connection.password" value="" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect" /> 
      <!--<property name="hibernate.hbm2ddl.auto" value="create-drop"/>--> 
      <property name="hibernate.hbm2ddl.auto" value="validate"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.format_sql" value="true"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

Проблема При использовании создания дропа и запустить свой проект, он создает оба мои entites в обеих базах данных. Подобно таблице, которая должна быть создана только Package.Entity1 в user_unit, также создается в portal_unit.

И когда я выбираю, вставляю, обновляю свои права, я устанавливаю единицу сопротивления в каждом из моих индивидуальных DAO.

, например, в реализации Entity Дао у меня есть:

EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit); 

где persistenceUnit может быть user_unit или portal_unit в зависимости от реализации.

Какие изменения следует сделать, чтобы он не создавал одну и ту же таблицу в обеих базах данных?

ответ

1

Добавить <exclude-unlisted-classes>true</exclude-unlisted-classes> в обеих вашем упорстве единиц или использовать JPA 2.x

+0

Он работал. спасибо :) Я отмечаю как правильный ответ как можно скорее. –

Смежные вопросы