Hibernate error: ids for this class must be manually assigned before calling save():
hibernate, identifier, java
Solution
Your `@Entity` class has a `String` type for its `@Id` field, so it can't generate ids for you.
If you change it to an auto increment in the DB and a `Long` in java, and add the `@GeneratedValue` annotation:
@Id
@Column(name="U_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long U_id;
it will handle incrementing id generation for you.
Problem
``` Caused by: org.springframework.orm.hibernate3.HibernateSystemException: ids for this class must be manually assigned before calling save(): com.rfid.model.Role; nested exception is org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.rfid.model.Role at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676) at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424) at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374) at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:748) at com.wfos.engine.wrapper.domain.impl.WrapperImpl.save(WrapperImpl.java:159) ... 47 more Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.rfid.model.Role at org.hibernate.id.Assigned.generate(Assigned.java:53) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:673) at org.springframework.orm.hibernate3.HibernateTemplate$16.doInHibernate(HibernateTemplate.java:751) at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419) ... 50 more WARN [21:14:21] (CommonsLoggingOutput.java:59): - --Erroring: batchId[1] message[java.lang.reflect.UndeclaredThrowableException] ``` My class is like this: ``` @Entity @javax.persistence.Table(name="Role") @Table(appliesTo = "Role") public class Role { @Id @Column(name="U_id") public String U_id; public String U_pwd; public String U_account; public String U_mode; public String U_status; public String getU_pwd() { return U_pwd; } public void setU_pwd(String u_pwd) { U_pwd = u_pwd; } public String getU_account() { return U_account; } public void setU_account(String u_account) { U_account = u_account; } public String getU_id() { return U_id; } public void setU_id(String u_id) { U_id = u_id; } public String getU_mode() { return U_mode; } public void setU_mode(String u_mode) { U_mode = u_mode; } public String getU_status() { return U_status; } public void setU_status(String u_status) { U_status = u_status; } } ```