2
I need to consult a database in Mysql and take a table from there to write to a database in Postgresql by Hibernate/JPA.
I set up the persistence.xml as follows:
<?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_2_0.xsd"
version="2.0">
<persistence-unit name="postgreSQL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/tfProjeto" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.connection.CharSet" value="UTF-8" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="10" />
<property name="hibernate.c3p0.timeout" value="1800" />
<property name="hibernate.c3p0.max_statements" value="50" />
</properties>
</persistence-unit>
<persistence-unit name="mySQL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:/localhost:3306/meuProjeto?zeroDateTimeBehavior=convertToNull" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="admin" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.connection.CharSet" value="UTF-8" />
<property name="hibernate.connection.characterEncoding" value="UTF-8" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="10" />
<property name="hibernate.c3p0.timeout" value="1800" />
<property name="hibernate.c3p0.max_statements" value="50" />
</properties>
</persistence-unit>
And my Entityfactory is like this:
@RequestScoped
public class EntityFactory implements Serializable {
private static final long serialVersionUID = 1L;
public static EntityManagerFactory entityManagerFactory;
public static EntityManagerFactory entityManagerFactoryMySQL;
public static void initializeEntityManager() {
if ((entityManagerFactory == null) || (!entityManagerFactory.isOpen())) {
entityManagerFactory = Persistence.createEntityManagerFactory("postgreSQL");
}
}
public static void initializeEntityManagerMySql() {
if ((entityManagerFactoryMySQL == null) || (!entityManagerFactoryMySQL.isOpen())) {
entityManagerFactoryMySQL = Persistence.createEntityManagerFactory("mySQL");
}
}
}
However, when I use the classes, Hibernate creates in both banks the two tables. That is, I need to take the users(Mysql) and save to usuarios(Postgresql), but Hibernate creates the tables users and usuarios in Mysql and the user tables and usuarios in Postgresql as well, and what I want is just to create the usuarios only on the basis of Postgresql.
Some solution?
I didn’t quite understand your problem: you don’t want me to manage the tables in the two bases and besides you’re not being able to do the queries, is that it? Or just the generation at the bottom that’s wrong? Why even generating the tables in both databases, if you use the correct EM will save the data in the other. Ie: using Mysql EM to read
userswill recover the data from there, treats as you need and saved inusuariosusing the Postgresql EM.– Bruno César