Dialect does not support identity key generation

oracle数据库不支持主键自增

如果用的是mysql出现这种错误 就去检查application里spring中配置数据源的地方

sessionFactory里的<property name="hibernateProperties"> 
里的

  1. <props>  
  2.                 <prop key="hibernate.dialect">  
  3.             org.hibernate.dialect.OracleDialect  //要换成mysql的dialect
  4.             </prop> 

 

 

oracle不支持identity,支持的是sequence , 
@GeneratedValue(strategy = IDENTITY) 
修改成sequence

 

你这使用sqlservser,然后dialect使用oracle怎么可能对,
如果想使用oracle而且没有制定sequece的名字,则hibernate使用默认的名字HIBERNATE_SEQUENCE
你必须创建名为HIBERNATE_SEQUENCE 的sequence 

 

呵呵,楼上几位说得对,你用oracle的方言去连接sql server,当然乱套了。

另外,即使方言配对了,如果不是项目有特别需要,id生成器没必要按数据库产品来配,直接用native,通用所有方言。这样有助于将来做数据库迁移,万一真有需要指定id的特殊生成器,到时候再改也不迟。

PS:如果数据量特别大,而且增删都特别频繁,数据库自动生成KEY是不太合适的,这时候建议自定义generator类,调用某存储过程按照特定逻辑来取得下一个id。

posted on 2014-09-08 11:37  plzdaye  阅读(915)  评论(0编辑  收藏  举报