Criar duas conexões no JPA

5 respostas
J

Hoje tenho duas base de dados, em cada base existe uma tabela chamada participante, porém os atributos dessa tabela não são iguais.

criei duas classe chamada participante, cada uma pertence a um pacote diferente. agora queria saber como faço para definir que cada classe pertence a uma conexão no jpa.

Obrigado a todos desde já!

5 Respostas

Hebert_Coelho
Você vai precisar definir em seu persistence.xml a classe com a configuração abaixo:
<persistence-unit ...>
        <class>com.uaihebert.EntidadeA</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>

<persistence-unit ...>
        <class>com.uaihebert.EntidadeB</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>
J

As classes precisa está com as anotações: @Entity ?

Hebert_Coelho

jjander.cunha:
As classes precisa está com as anotações: @Entity ?
Tem que ser uma Entidade normal.

J

Alguém pode me ajudar, quando carrego o EntityManager apresenta o erro abaixo:

<persistence version="1.0" 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"> <persistence-unit name="sikuli-mysql" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.com.comprev.sisprev.modelo.AcaoComprev</class> <class>br.com.comprev.sisprev.modelo.Agencia</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> <property name="hibernate.connection.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> <property name="hibernate.connection.username" value="xxxxx" /> <property name="hibernate.connection.password" value="yyyyy" /> <property name="hibernate.connection.url" value="jdbc:postgresql://xxxxxxx:5432/base1" /> </properties> </persistence-unit> <persistence-unit name="conexao_bdc" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.com.comprev.bdc.modelo.AlocarUsuario</class> <class>br.com.comprev.bdc.modelo.BloqueioSiape</class> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> <property name="hibernate.connection.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" /> <property name="hibernate.connection.username" value="xxxxx" /> <property name="hibernate.connection.password" value="yyyyy" /> <property name="hibernate.connection.url" value="jdbc:postgresql://xxxxxxxx:5432/base2" /> </properties> </persistence-unit> </persistence>

Erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at teste.main(teste.java:9)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: conexao_bdc] class or package not found
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1386)
	at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1159)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1004)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:282)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:366)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at br.com.comprev.util.JPAUtil.<clinit>(JPAUtil.java:20)
	... 1 more
Caused by: java.lang.ClassNotFoundException: br.com.comprev.bdc.modelo.AlocarUsuario
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:170)
	at org.hibernate.ejb.Ejb3Configuration.classForName(Ejb3Configuration.java:1302)
	at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1374)
	... 9 more

Classe do Erro:

@Entity
@Table(name="alocar_usuario")
@SequenceGenerator(name = "alocar_usuario_codigo_seq", sequenceName = "alocar_usuario_codigo_seq", allocationSize=1, initialValue=1)
public class AlocarUsuario implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(generator = "alocar_usuario_codigo_seq", strategy = GenerationType.SEQUENCE)
	@Column(columnDefinition="serial")
	private long codigo;
	
	@Column(length=50, nullable=false)
	private String usuario;
	
	@Column(name="data_mailing",nullable=false)
	@Temporal(TemporalType.DATE)
	private Date dataMailing;
}
J

Hebert Coelho, sua orientação deu certo. O erro estava acontecendo decorrente ao nome do pacote que estava digitando errado.

Criado 17 de abril de 2014
Ultima resposta 27 de abr. de 2014
Respostas 5
Participantes 2