2014-05-07 91 views
3

我有我的應用程序與Spring3那麼好。基本上客戶希望將數據庫從mysql遷移到oracle。所以一切都是正確的。問題與oracle的順序一起呈現。我在各方面都試圖配置Hibernate,但我總是得到錯誤帶休眠的Oracle序列

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assi 

gned before calling save():  
org.hibernate.id.Assigned.generate(Assigned.java:52) 
     org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117) 
     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206) 
     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191) 
     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114) 
     org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
     org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:735) 
     org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:727) 
     org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:723) 
     it.openingcode.vwh.dao.AbstractHibernateDAOImpl.save(AbstractHibernateDAOImpl.java:48) 
     it.openingcode.vwh.dao.AbstractHibernateDAOImpl.save(AbstractHibernateDAOImpl.java:20) 
     it.openingcode.vwh.services.AbstractCrudServiceImpl.save(AbstractCrudServiceImpl.java:70) 
     it.openingcode.vwh.services.AbstractCrudServiceImpl.saveAll(AbstractCrudServiceImpl.java:77) 
     it.openingcode.vwh.services.PrivilegiServiceImpl.updateFromGruppo(PrivilegiServiceImpl.java:92) 
     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) 

在這個模型中,我添加註釋如下:

@Id 
    @GeneratedValue(strategy = GenerationType.AUTO, generator="my_entity_seq_gen") 
    @SequenceGenerator(name="my_entity_seq_gen", sequenceName="SEQ_PROFILI") 
    @Column(name = "ID") 
    private Long id; 

有人能幫助我嗎?

+0

你檢查右邊的相關帖子將這個註釋? – Stefan

回答

1

,如果你想使用它與Oracle

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="my_entity_seq_gen") 
+0

然後刪除項目 @SequenceGenerator(name =「my_entity_seq_gen」,sequenceName =「SEQ_PROFILI」) –

+0

@FlavioMerolli您不應刪除它,序列生成器負責生成值。它使用模擬序列值的數據庫對象。在oracle中它是本地對象,在mysql中它是一個表。你應該添加nullable = false到id字段。使用http://stackoverflow.com/a/13512585/573032更新表格 –