Hibernate e JPA mapear Objetos para diferentes "persistence-unit"

2 respostas
MarceloNeo

Olá Gujeioros peço ajuda de vocês...

Tenho dois objeto
// objeto para base postgresql
@Entity
@Table( name = "gerente", schema="postgres", catalog="postgres")
@NamedQueries( { @NamedQuery( name = "Gerente.findAll", query = "SELECT g FROM Gerente g") })
public class Gerente implements Serializable
{
  //suas propriedades
   
}
//objeto para base mysql

@Entity
@Table( name = "funcionario", schema="testeindice")
@NamedQueries( { @NamedQuery( name = "Funcionario.findAll", query = "SELECT f FROM Funcionario f") })
public class Funcionario implements Serializable
{
   //suas propriedades
}
agora o persistence.xml com duas unidades de persistecia.
<?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="mysql" transaction-type="RESOURCE_LOCAL">
		
		<properties>

			<!-- Confiuracao Mysql -->
			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/testeindice" />
			<property name="hibernate.connection.username" value="root" />
			<property name="hibernate.connection.password" value="*****" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />

		</properties>
	</persistence-unit>
	<persistence-unit name="postgres" transaction-type="RESOURCE_LOCAL">

		<properties>

			<!-- Configuração PostgresSQL -->
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.url"	value="jdbc:postgresql://localhost:5432/postgres" />
			<property name="hibernate.connection.username" value="postgres" />
			<property name="hibernate.connection.password" value="****" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			
		</properties>
	</persistence-unit>
</persistence>

Dessa forma como esta as unidades de persitencia tentam subir as duas entidades nos dois bancos.

Como faço para cada unidade subir somente cada entidades na sua devida "persistence-unit"?
Não sei como fazer isso usando JPA.
Me ajudem por favor!

2 Respostas

rsakurai

Adiciona dentro da persistence-unit quais são suas entitys:

<persistence-unit name="mysql" transaction-type="RESOURCE_LOCAL"> 
  <class>pacote.Funcionario</class>
  ...
</persistence-unit>
<persistence-unit name="postgres" transaction-type="RESOURCE_LOCAL">
  <class>pacote.Gerente</class>
  ...
</persistence-unit>
MarceloNeo

rsakurai, ja tinha tentado fazer da forma que você falou.

Mas, era o que você falou mesmo...
Meu time estava perdendo de 7 a ZERO
e agora virou o jogo 8 a 7 e ainda joga melhor
BOOOOOOOOOOmmmm mil felicidades para você

Vou te exeplicar o problema.
<persistence-unit name="mysql" transaction-type="RESOURCE_LOCAL">


		<properties>

			<class>sys.dao.Funcionario</class>

não assim como vi em todas coisas que pesquisei...

assim não
<persistence-unit name="mysql" transaction-type="RESOURCE_LOCAL">
	
	<class>sys.dao.Funcionario</class>

		<properties>
Tabém mudei um pouco o Objeto.
@PersistenceUnits({@PersistenceUnit(unitName="postgres")})
@Entity
@Table( name = "gerente")
@NamedQueries( { @NamedQuery( name = "Gerente.findAll", query = "SELECT g FROM Gerente g") })
public class Gerente implements Serializable
{
o outro objeto é semelhante

A principio resolvi esse problema.
agora só falta mais um.

mas vou abrir outra thread...
Um grande abraço Receba todas as benças de gratidão

Criado 5 de abril de 2011
Ultima resposta 5 de abr. de 2011
Respostas 2
Participantes 2