Uso de cache com hibernate

Galera, tenho uma classe chamada empresa que é cacheada.

@Entity @Table(name = "empresa") @org.hibernate.annotations.Cache(usage=org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( {

Estou usando o EhCache como fornecedor de cache.

Estou usando a propriedade

que desabilita o mapeamentos do cache, deste modo, todo o cache é desabilitado da aplicação,
(ao contrário seria necessário eu passar em todos os arquivos e retirar os mapeamentos de cahce)
mas quando rodar a aplicação, aparece este erro.

Exception in thread "main" java.lang.ExceptionInInitializerError at banco.HibernateUtil.<clinit>(HibernateUtil.java:45) at Main.Main.main(Main.java:36) Caused by: org.hibernate.MappingException: invalid configuration at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1487) at org.hibernate.cfg.Configuration.configure(Configuration.java:1428) at banco.HibernateUtil.<clinit>(HibernateUtil.java:43) ... 1 more Caused by: org.xml.sax.SAXParseException: The content of element type "session-factory" must match "(property*,mapping*,(class-cache|collection-cache)*,event*,listener*)". at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1772) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2923) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.dom4j.io.SAXReader.read(SAXReader.java:465) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484) ... 3 more

Alguém tem alguma idéia do que possa ser???

Coloca aqui o teu xml de configuração do Hibernate. Tem algum problema nesse aquivo.

hibernate.cfg.xml

[code]<?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>
<!-- properties -->
<property name=“connection.driver_class”> com.mysql.jdbc.Driver </property>
<property name=“connection.url”> jdbc:mysql://localhost:3306/mono </property>
<property name=“dialect”> org.hibernate.dialect.MySQLDialect </property>
<property name=“show_sql”>true</property>
<property name=“connection.username”>root</property>
<property name=“connection.password”>root</property>
<property name=“connection.pool_size”>10</property>

    &lt;!--Pool de conexões--&gt;
    
    &lt;property name="hibernate.c3p0.min_size"&gt;5&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.max_size"&gt;20&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.timeout"&gt;300&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.max_statements"&gt;50&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.idle_test_period"&gt;3000&lt;/property&gt;  
    
    &lt;!-- Mostra o sql --&gt;  
    &lt;property name="show_sql"&gt;true&lt;/property&gt; 
    &lt;!-- Saída mais legível --&gt;  
    &lt;property name="format_sql"&gt;true&lt;/property&gt;  
    &lt;!-- Mostra de onde os sqls vem --&gt;  
    &lt;property name="use_sql_comments"&gt;true&lt;/property&gt;  
    
    &lt;!-- mapping classes --&gt;
    &lt;mapping class="model.Cliente" /&gt;
    &lt;mapping class="model.Pedidocliente" /&gt;
    &lt;mapping class="model.Empresa" /&gt;    
    
    
    &lt;!-- Cache  --&gt;           
    &lt;property name="hibernate.cache.use_second_level_cache"&gt;true&lt;/property&gt;         
    
    
&lt;/session-factory&gt;

</hibernate-configuration>[/code]

ehcache.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

<cache name="model.Empresa"
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk=“false”
/>
[/code]

Galera, acho que descobri o erro, eu mudei a parte onde defino os caches e coloquei no início do arquivo xml do hibernate, fiz dois testes, aqui um em cima e outro embaixo, realmente aquele que está em cima funciona,

Funcionou desta maneira

[code]<?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>

    &lt;!-- Cache  --&gt;           
    &lt;property name="hibernate.cache.use_second_level_cache"&gt;true&lt;/property&gt;   
    &lt;property name="hibernate.cache.provider_class"&gt; org.hibernate.cache.EhCacheProvider &lt;/property&gt;
 
    
    &lt;!-- properties --&gt;
    &lt;property name="connection.driver_class"&gt;       com.mysql.jdbc.Driver   &lt;/property&gt;
    &lt;property name="connection.url"&gt;    jdbc:mysql://localhost:3306/mono    &lt;/property&gt;
    &lt;property name="dialect"&gt;     org.hibernate.dialect.MySQLDialect      &lt;/property&gt;
    &lt;property name="show_sql"&gt;true&lt;/property&gt;
    &lt;property name="connection.username"&gt;root&lt;/property&gt;
    &lt;property name="connection.password"&gt;root&lt;/property&gt;
    &lt;property name="connection.pool_size"&gt;10&lt;/property&gt;
    
    &lt;!--Pool de conexões--&gt;
    
    &lt;property name="hibernate.c3p0.min_size"&gt;5&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.max_size"&gt;20&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.timeout"&gt;300&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.max_statements"&gt;50&lt;/property&gt;  
    &lt;property name="hibernate.c3p0.idle_test_period"&gt;3000&lt;/property&gt;  
    
    &lt;!-- Mostra o sql --&gt;  
    &lt;property name="show_sql"&gt;true&lt;/property&gt; 
    &lt;!-- Saída mais legível --&gt;  
    &lt;property name="format_sql"&gt;true&lt;/property&gt;  
    &lt;!-- Mostra de onde os sqls vem --&gt;  
    &lt;property name="use_sql_comments"&gt;true&lt;/property&gt;  
    
    &lt;!-- mapping classes --&gt;
    &lt;mapping class="model.Cliente" /&gt;
    &lt;mapping class="model.Pedidocliente" /&gt;
    &lt;mapping class="model.Empresa" /&gt;    
    
    
    
    
    
&lt;/session-factory&gt;

</hibernate-configuration>[/code]