Coe galera.. to quebrando a cabeça p fazer uma consulta no BD.. vamos as configurações:
meuprograma-ds.xml<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>PostgresDS</jndi-name>
<use-java-context>true</use-java-context>
<connection-url>jdbc:postgresql://localhost/Teste</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>postgres</user-name>
<password>3c257903b92d97bf</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
<metadata>
<type-mapping>PostgreSQL 8.0</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
<server>
<mbean code="org.jboss.hibernate.jmx.Hibernate" name="jboss.har:service=Hibernate">
<attribute name="DatasourceName">java:/PostgresDS</attribute>
<attribute name="Dialect">org.hibernate.dialect.PostgreSQLDialect</attribute>
<attribute name="SessionFactoryName">java:/hibernate/MeuSessionFactory</attribute>
<attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
<attribute name="ShowSqlEnabled">true</attribute>
</mbean>
</server>
Até aki tudo ocorre na boa! ele cria o JNDI tudo certinho o problema da na configuração da aplicação. Vamos a ela..
hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:/hibernate/MeuSessionFactory">
<property name="hibernate.c3p0.max_size">500</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">100</property>
<property name="hibernate.c3p0.max_statements">10</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
</session-factory>
</hibernate-configuration>
Minha classe de conexao:
HibernateSessionFactory.java
package spc.dao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.jboss.hibernate.session.HibernateContext;
public class HibernateSessionFactory {
private static Logger LOGGER = Logger.getLogger(HibernateSessionFactory.class);
private static final Configuration cfg = new Configuration();
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static SessionFactory sessionFactory;
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
if (session.isOpen())
session.close();
}
}
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
private HibernateSessionFactory() {
}
}
Minha conexao para está OK porque o objeto sessionFactory não está nulo e o método currentSession() retorna um endereço de sessão.
quando Executo o seguinte método:public List getElements(Class classe) throws DAOException {
List listaValores = null;
Criteria consulta = null;
try {
consulta = conexao.createCriteria(classe);
listaValores = consulta.list();
} catch (HibernateException e) {
e.printStackTrace();
throw new DAOException(e.getMessage());
}
return listaValores;
}
2008-07-18 14:59:54,953 ERROR [STDERR] org.hibernate.MappingException: Unknown entity: spc.dto.UsuarioDTO
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:68)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
at spc.dao.HibernateDAO.getElementById(HibernateDAO.java:201)
at spc.bo.UsuarioBO.getElementByPassWord(UsuarioBO.java:118)
at spc.view.UsuarioAction.login(UsuarioAction.java:317)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
Parece que não está enxergando minhas classe que estão no HAR.
como resolver? EJB? :?
Outra dúvida eu setei p exibir as SQL porém no log não mostrou nada, e está no modo DEBUG meu log4j.properties
VLW!