Usando a solução do @Lavieri apresentada no topico http://guj.com.br/posts/list/141887.java
Eu estou tendo um problema.
Usando duas sessions factories ao iniciar dá esse erro
[INFO] [2009-10-26 @ 13:08:27] [main|DatabaseMetadata] table not found: empresa
2009-10-26 13:08:27.579::WARN: failed vraptor
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryCollectionCreator' defined in file [S:\Edufa\workspace\w\api\target\classes\br\com\w\infra\vraptor\util\SessionFactoryCollectionCreator.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.com.w.infra.vraptor.util.SessionFactoryCollectionCreator]: Constructor threw exception; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
...
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.com.w.infra.vraptor.util.SessionFactoryCollectionCreator]: Constructor threw exception; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
... 61 more
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at br.com.w.repository.impl.HibernateUtilities.createEntityManagerFactory(HibernateUtilities.java:55)
at br.com.w.repository.impl.HibernateUtilities.getSessionFactory(HibernateUtilities.java:41)
at br.com.w.infra.vraptor.util.SessionFactoryCollectionCreator.<init>(SessionFactoryCollectionCreator.java:16)
Realmente a tabela empresa não está na base de dados definida pelo persistence-unit default.
No caso a entidade Empresa depende do outro persistence-unit (default-w), mas dá erro ao inicializar o primeiro (default).
Fora do vraptor, ao usar apenas um session factory (usando junit) funciona e não dá esse erro.
A impressão é q tem algo a ver com o spring, mas como não conheço ele, não sei onde investigar
Componente usado:
@Component
@ApplicationScoped
public class SessionFactoryCollectionCreator implements ComponentFactory<SessionFactoryCollection> {
private final SessionFactoryCollection factoryCollection;
public SessionFactoryCollectionCreator() {
this.factoryCollection = new
SessionFactoryCollection(
HibernateUtilities.getSessionFactory("default"), // <-- Erro aqui
HibernateUtilities.getSessionFactory("default-w")); // <-- persistencia de empresa definida aqui
}
...
[]s