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>
<!--Pool de conexões-->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- Mostra o sql -->
<property name="show_sql">true</property>
<!-- Saída mais legível -->
<property name="format_sql">true</property>
<!-- Mostra de onde os sqls vem -->
<property name="use_sql_comments">true</property>
<!-- mapping classes -->
<mapping class="model.Cliente" />
<mapping class="model.Pedidocliente" />
<mapping class="model.Empresa" />
<!-- Cache -->
<property name="hibernate.cache.use_second_level_cache">true</property>
</session-factory>
</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>
<!-- Cache -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property>
<!-- 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>
<!--Pool de conexões-->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- Mostra o sql -->
<property name="show_sql">true</property>
<!-- Saída mais legível -->
<property name="format_sql">true</property>
<!-- Mostra de onde os sqls vem -->
<property name="use_sql_comments">true</property>
<!-- mapping classes -->
<mapping class="model.Cliente" />
<mapping class="model.Pedidocliente" />
<mapping class="model.Empresa" />
</session-factory>
</hibernate-configuration>[/code]