[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Toplink->Hibernate, GenerateSequence Issue

trouby do-not-reply at jboss.com
Thu Jul 19 18:13:44 EDT 2007


Hey,

I am trying to migrate an application from GF that uses Toplin as JPA to Jboss with Hibernate,


I'm still having a confusion of how to generate IDs as generic as possible,

Usually my app is deployed with Oracle 9/10 or Mysql DBs and I'd like to have my application be as generic as possible,

I tried just to use '@Id @GeneratedValue' annotations but with Oracle it just didn't work. so my entities ID get method looked like:

  | @Id @GeneratedValue //JB
  |     @Column(name="MY_ID")
  |     public Long getMyId() {
  |         return myId;
  |     }
  | 


So, with Toplink, I solved it by using GenerateSequences, which worked fine for Mysql too.

It looked like:


  | @Id
  | @SequenceGenerator(name="MYTABLE_GEN",sequenceName="MYTABLE_SEQ", allocationSize=1)
  | @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="MYTABLE_GEN")
  |     @Column(name="MY_ID")
  |     public Long getMyId() {
  |         return myId;
  |     }
  | 




When I tried to deploy my application with Jboss, I got the following exception:




  | Caused by: org.hibernate.MappingException: could not instantiate id generator
  |         at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:98)
  |         at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:152)
  |         at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:192)
  |         at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
  |         at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
  |         ... 99 more
  | Caused by: org.hibernate.MappingException: Dialect does not support sequences
  |         at org.hibernate.dialect.Dialect.getSequenceNextValString(Dialect.java:595)
  |         at org.hibernate.id.SequenceGenerator.configure(SequenceGenerator.java:65)
  |         at org.hibernate.id.SequenceHiLoGenerator.configure(SequenceHiLoGenerator.java:43)
  |         at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:94)
  |         ... 103 more
  | 


What am I doing wrong? and most important, what's the best practice of generating regular long IDs in order to support most of the DB vendors? (especially Mysql/Oracle)

Thanks,

Asaf.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4065985#4065985

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4065985



More information about the jboss-user mailing list