Mapeamento de tabela sem auto-incremet pelo Hibernate não funciona [resolvido]

3 respostas
C

Pessoal, boa tarde.

Tenho uma tabela simples, que irá armazenar uns 4 valores que dificilmente irão mudar. No início estes valores seriam constantes do sistema, mais foi decidido que seria melhor armazenar os mesmos numa tabela no banco de dados. Por causa disto, foi criado uma tabela com dois campos, um código e outro descrição. Por causa da natureza dos dados, este campo código é fixo, e não auto-increment. Relizei o mapeamento da mesma pelo Hibernate.
O problema ocorre quando se tenta carregar o arquivo de mapeamento. Ocorre o seguinte erro:

net.sf.hibernate.MappingException: Error reading resource: br/com/abnc/detnet/renach/info/orm/TabTipodocumentoidentidade.hbm.xml

at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:339)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:1018)

at net.sf.hibernate.cfg.Configuration.doConfigure(Configuration.java:974)

at net.sf.hibernate.cfg.Configuration.configure(Configuration.java:902)

at br.com.abnc.detnet.renach.dal.hibernate.SessionFactory.currentSession(SessionFactory.java:48)

at br.com.abnc.detnet.renach.dal.hibernate.DALTipoDocumentoIdentidadeHib.listarTipoDocumentoIdentidade(DALTipoDocumentoIdentidadeHib.java:49)

at br.com.abnc.detnet.renach.bll.webc.BLLCadastrarVistoriador.listarTiposDocumentosIdentidade(BLLCadastrarVistoriador.java:53)

at br.com.abnc.detnet.renach.bll.bdo.BDOCadastrarVistoriador.listarTiposDocumentosIdentidade(BDOCadastrarVistoriador.java:40)

at br.com.abnc.detnet.renach.action.CadastrarVistoriadorAction.inserir(CadastrarVistoriadorAction.java:51)

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:324)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)

at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)

at java.lang.Thread.run(Thread.java:534)

Caused by: net.sf.hibernate.MappingException: invalid mapping

at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:287)

at net.sf.hibernate.cfg.Configuration.addResource(Configuration.java:336)

 44 more

Caused by: org.xml.sax.SAXParseException: The content of element type id is incomplete, it must match (meta*,column*,generator).

at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)

at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)

at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)

at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)

at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)

at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)

at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

at org.dom4j.io.SAXReader.read(SAXReader.java:339)

at net.sf.hibernate.cfg.Configuration.addInputStream(Configuration.java:286)

 45 more

Abaixo segue descritivo do arquivo de mapeamento:

<?xml version="1.0"?>
<class name="TabTipodocumentoidentidade" table="TAB_TIPODOCUMENTOIDENTIDADE">
    <id name="didStrCdTipodocumento" column="DID_STR_CD_TIPODOCUMENTO" type="java.lang.String">
        <generator class="native"/>
    </id>

    <property name="didStrDsTipodocumento" column="DID_STR_DS_TIPODOCUMENTO" type="java.lang.String" />
</class>

Alguém teria idéia do que pode estar ocorrendo?

3 Respostas

Mauricio_Linhares

Não apareceu nenhum arquivo de mapeamento aqui.

_fs

Poste novamente colocando o conteúdo do arquivo entre as tags [ code]seucodigo[ /code]

C

Realmente não sei pq não apareceu o conteúdo do arquivo de mapeamento :roll:

De qualquer forma, já consegui resolver o problema… No caso é necessário usar no generator o valor “assigned” quando a chave não for do tipo auto-increment.

De qualquer forma, estou postando novamente o código do meu arquivo abaixo, devidamente modificado, para servir como referência:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
                            "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
                            "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

<!-- DO NOT EDIT: This is a generated file that is synchronized -->
<!-- by MyEclipse Hibernate tool integration.                   -->
<!-- Created Mon Jun 13 14:34:04 BRT 2005                         -->
<hibernate-mapping package="br.com.abnc.detnet.renach.info.orm">

    <class name="TabTipodocumentoidentidade" table="TAB_TIPODOCUMENTOIDENTIDADE">
        <id name="codigo" column="DID_STR_CD_TIPODOCUMENTO" type="java.lang.String">
            <generator class="assigned"/>
        </id>
 
        <property name="tipoDocumento" column="DID_STR_DS_TIPODOCUMENTO" type="java.lang.String" />
    </class>
    
</hibernate-mapping>
Criado 13 de junho de 2005
Ultima resposta 13 de jun. de 2005
Respostas 3
Participantes 3