<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="br.si.model" schema="DB" auto-import="false">
<class name="OrganizacaoImobiliaria" table="ORGANIZACAO_IMOB" mutable="true">
<id name="id" column="ID_ORG_IMOB" type="long">
<generator class="native"/>
</id>
<property name="numOrgImob" column="NUM_ORG_IMOB" not-null="true"/>
<property name="descricao" column="DESCR_ORG_IMOB" not-null="true"/>
<property name="tipoInfo" column="ID_TIPO_INFO" not-null="true"/>
<property name="numPlanta" column="NUM_PLANTA" not-null="false"/>
<property name="idOrgImobSup" column="ID_ORG_IMOB_SUP" not-null="false"/>
<property name="codEstruturado" column="COD_ESTRUTURADO" not-null="true"/>
</class>
</hibernate-mapping>
private Integer newFolhaOrgImobiliaria(String codigo) {
String codEstruturado = codigo.substring(0,4);
//cria o objeto folha
OrganizacaoImobiliaria folha = new OrganizacaoImobiliaria();
//seta os valores referentes a folha
folha.setNumOrgImob(codEstruturado);
folha.setDescricao(OrganizacaoImobiliaria.IdTipoInfo.FOLHA.getDescricao() + codEstruturado);
folha.setTipoInfo(OrganizacaoImobiliaria.IdTipoInfo.FOLHA.getTipoInfo());
folha.setNumPlanta(codEstruturado);
folha.setCodEstruturado(codEstruturado);
try {
saveOrganizacaoImob(folha);
} catch (Exception e) {
e.printStackTrace();
}
//após o insert se busca essa folha na organizacao_imob e pega o ID_ORG_IMOB inserido
OrganizacaoImobiliaria newFolha = findOrganizacaoImobByCod(codEstruturado);
Integer idFolhaOrgImob = newFolha.getId().intValue();
return idFolhaOrgImob;
}
public void saveOrganizacaoImob(OrganizacaoImobiliaria organizacaoImobiliaria ) throws Exception {
if (organizacaoImobiliaria.getId() == null) {
getDao().save(organizacaoImobiliaria);
} else
getDao().update(organizacaoImobiliaria);
}
Galera, postei ai o mapeamento da tabela, e então tenho na minha classe OrganizacaoImobiliariaService, os 2 metodos abaixo do mapemamento.
Eu recebo uma mensagem em XML, e preciso salva-la no banco Oracle 9i.
Porém quando executa o getDao().save(organizacaoImobiliaria) ele não gera o ID da tabela e me da esse erro:
17:43:21,743 INFO [STDOUT] Hibernate:
select
DBSM.hibernate_sequence.nextval
from
dual
17:43:21,868 WARN [JDBCExceptionReporter] SQL Error: 2289, SQLState: 42000
17:43:21,868 ERROR [JDBCExceptionReporter] ORA-02289: sequence does not exist
17:44:06,350 ERROR [STDERR] org.hibernate.exception.SQLGrammarException: could not get next sequence value
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:96)
.
.
.
aused by: java.sql.SQLException: ORA-02289: sequence does not exist
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:236)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)
... 31 more
E ai, alguém saberia me dizer o que acontece? A final eu fiz o mapeamento utilizando o generator class=“native”, acho que então não deveria acontecer esse erro.