Hibernate e a geração do código de domínio com Oracle com triggers de auto-incremento

Utilizei o MySql e deu tudo certo, porém quando crio POJOs a partir de uma base de dados Oracle, pela geração automática de código utilizando Netbeans 6.5, o construtor releva as chaves primárias, entretanto existem triggers de auto-incremento, as quais me incumbi de criar. Pela geração automática, deveria existir comentário EJB3 de semelhante forma que aconteceu quando utilizo o MySql, dessa maneira:

@Id @GeneratedValue(strategy=IDENTITY)

@Column(name="id", unique=true, nullable=false)
public Long getId() {
    return this.id;
}

public void setId(Long id) {
    this.id = id;
}

Quando utilizo Oracle, segue:

@Id

@Column(name=“id”, unique=true, nullable=false, precision=22, scale=0)
public BigDecimal getId() {
return this.id;
}

public void setId(BigDecimal id) {
    this.id = id;
}

Abro a página web preencho o formulário, não acusa erro algum, porém não insere informação alguma quando visualizo as tabelas no Oracle!

Não encontro nenhum caso semelhante, o Google tem sofrido :D, se alguém puder ajudar, agradeço desde já!

Obrigado pela atenção.

hibernate também sofre
assim funciona

@Id
@GeneratedValue
@Column(name=“id”)
private Long id;

BigDecimal geralmente é para valores em moeda.

Já pesquisei bastante, implantei código GeneratedValue e SequenceGenerated,
de todas as formas, modifiquei o construtor, ocasionando inclusive um erro porque o código automático
não pode ser modificado, então o que me leva aq crer que não há nada a fazer no netbeans porque o código é gerado,
e ocorre esse desastre com o oracle. Como a minha empresa trabalha com o Oracle, o Eclipse pode ser uma solução???

Eu sempre usei eclipse.
A gente faz algumas coisas no braço, mas no final dá tudo certo.

Existem casos bem-sucedidos de Netbeans e Hibernate + Oracle,
se alguém puder ajudar, fico grato!

java.lang.annotation.IncompleteAnnotationException: org.hibernate.annotations.Parameter missing element value

@Id
@GenericGenerator(name=“banco_id_seq”,
strategy=“jpl.hibernate.util.TriggerAssignedIdentityGenerator”,parameters=@Parameter(name=“idbanco”,value=“1”))

tá dando esse erro agora!

@Id
@GenericGenerator(name = “banco_id_seq”, strategy = “jpl.hibernate.util.TriggerAssignedIdentityGenerator”,parameters={@Parameter(name=“max_lo”, value=“100”)})
@GeneratedValue(strategy=GenerationType.SEQUENCE)

mesmo que eu coloque apenas o GeneratedValue como AUTO, ainda gera este erro:

org.hibernate.exception.SQLGrammarException: could not get next sequence value

Será que o problema está na criação da sequence ou trigger?

Vai o código de criação aí:

create sequence “banco_id_seq”;

CREATE OR REPLACE TRIGGER "bi_banco"
before insert on banco
for each row
begin
select “banco_id_seq”.nextval into :NEW.idbanco from dual;
end;

ALTER TRIGGER “bi_banco” ENABLE;

ajudem-me brothers valeu!

Esta é a maneira correta:

@Id @GeneratedValue(generator=“banco_id_seq”,strategy=GenerationType.SEQUENCE)
@SequenceGenerator(name=“banco_id_seq”, sequenceName=“banco_id_seq”)

@Column(name="IDBANCO", unique=true, nullable=false, precision=22, scale=0)
public BigDecimal getIdbanco() {
    return this.idbanco;
}

public void setIdbanco(BigDecimal idbanco) {
    this.idbanco = idbanco;
} 

porém dá erro:

SQL Error: 2289, SQLState: 42000
ORA-02289: a seqüência não existe
The log message is null.
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)
at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:58)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at CadastroEstagiario.ceActionForm.validate(ceActionForm.java:229)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:950)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.sql.SQLException: ORA-02289: a seqüência não existe
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:1038)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1133)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:75)

EURECA

ae galera show de bola deu certo, e já que tem muitos acessos resolvi postar a solução!
este é o meu arquivo hibernate.cfg:

<?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>
<property name=“hibernate.dialect”>org.hibernate.dialect.OracleDialect</property>
<property name=“hibernate.connection.driver_class”>oracle.jdbc.OracleDriver</property>
<property name=“hibernate.connection.url”>jdbc:oracle:thin:@127.0.0.1:1521:xe</property>
<property name=“hibernate.connection.username”>sgrhe</property>
<property name=“hibernate.connection.password”>secreto11</property>
<property name=“hibernate.connection.pool_size”>1</property>
<property name=“hibernate.current_session_context_class”>thread</property>
<property name=“hibernate.cache.provider_class”>org.hibernate.cache.NoCacheProvider</property>
<property name=“hibernate.show_sql”>true</property>
<property name=“hibernate.hbm2ddl.auto”>validate</property>
<mapping class=“Hibernate.Banco”/>
<mapping class=“Hibernate.Usercoede”/>
<mapping class=“Hibernate.Estagiario”/>
<mapping class=“Hibernate.Faculdade”/>
</session-factory>
</hibernate-configuration>

No Oracle basta colocar após o comentário EJB3 @Entity:

@SequenceGenerator(name=“SEQ_BAN”,sequenceName=“SEQ_BANCO”)

e lá embaixo depois de @Id especificar o seu gerador o qual já foi criado no hibernate e tem um nome qualquer, exceto o sequenceName que deve representar o nome da sequência idem à nomeação no banco de dados:

@GeneratedValue(generator=“SEQ_BAN”)

Pra finalizar e dar um tchau e bença no Oracle está aqui o meu código de criação da sequence e da trigger,

create sequence “SEQ_BANCO” start with 1;

CREATE OR REPLACE TRIGGER "BI_BANCO"
before insert on banco
for each row
begin
if :new.idbanco is null or :new.idbanco=0 then
select “SEQ_BANCO”.nextval into :NEW.idbanco from dual;
end if;
end;

valeu rapa, qualquer dúvida, já sabe! Caso possa ajudar ficarei feliz!

bom dia pessoal gostaria muito de uma ajuda
estou para comecar um projeto com flex e java e gostaria d saber o que melhor acessar o banco com hibernate ou jdbc o sistema sera feio 80% no banco deixando para fora so os forms EM FLEX e relatorios o restante sera feito no banco o que ,elhor hibernate ou jdbc