Olá pessoal,
Preciso trabalhar com duas conexões para banco de dados dentro do meu projeto. Dei uma pesquisada e fiz os seguintes passos:
- Criei dois persistence-unit no persistence.xml, com as duas conexões;
- Alterei meu JPAUtil para carregar os dois persistences:
@PersistenceUnit(unitName = "pedidos")
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("pedidos");
@PersistenceUnit(unitName = "zanthus")
private static EntityManagerFactory emfZanthus = Persistence.createEntityManagerFactory("zanthus");
@Produces
@Default
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
@Produces
@Zanthus
public EntityManager getZanthus() {
return emfZanthus.createEntityManager();
}
...
Porém ao chamar o segundo persistence-unit no meu DAO, parece que ele não está apontando para ele e sim para o primeiro, pois ele aparece que a entidade não está mapeada.
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Material is not mapped [SELECT t FROM Material t WHERE t.codMercadoria = :pMaterial AND t.codLoja = :pLoja]
Esse é o conteúdo do meu persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="pedidos">
<!-- Implementação do JPA, no nosso caso Hibernate -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- Aqui são listadas todas as entidades -->
<class>br.com.bigsupermercados.pedidos.modelo.ItemPedido</class>
<class>br.com.bigsupermercados.pedidos.modelo.PagamentoPedido</class>
<class>br.com.bigsupermercados.pedidos.modelo.Pedido</class>
<class>br.com.bigsupermercados.pedidos.modelo.Usuario</class>
<class>br.com.bigsupermercados.pedidos.modelo.Cliente</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://192.0.1.12/pedidos" />
<property name="javax.persistence.jdbc.user"
value="postgres" />
<property name="javax.persistence.jdbc.password"
value="123456" />
<property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect" /> <!-- DB Dialect -->
<property name="hibernate.hbm2ddl.auto" value="update" /> <!-- create / create-drop / update -->
<property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
<property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
</properties>
</persistence-unit>
<persistence-unit name="zanthus">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>br.com.bigsupermercados.pedidos.modelo.Material</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:sqlserver://192.0.1.201:1433;databaseName=ZeusRetail" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password"
value="BIG001sup" />
<property name="hibernate.dialect"
value="org.hibernate.dialect.SQLServerDialect" /> <!-- DB Dialect -->
<property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
<property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
</properties>
</persistence-unit>
</persistence>
Essa entidade é apenas para o segundo DAO mesmo.
Alguém já passou por isso?
Obrigado,