休眠错误:必须在调用 save() 之前手动分配此类的 id:

新手上路,请多包涵
引起:org.springframework.orm.hibernate3.HibernateSystemException:这个类的ids必须在调用save()之前手动分配:com.rfid.model.Role;嵌套异常是 org.hibernate.id.IdentifierGenerationException:必须在调用 save() 之前手动分配此类的 id:com.rfid.model.Role
    在 org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676)
    在 org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    在 org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
    在 org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    在 org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:748)
    在 com.wfos.engine.wrapper.domain.impl.WrapperImpl.save(WrapperImpl.java:159)
    ... 47 更多
    原因:org.hibernate.id.IdentifierGenerationException:必须在调用 save() 之前手动分配此类的 id:com.rfid.model.Role
    在 org.hibernate.id.Assigned.generate(Assigned.java:53)
    在 org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
    在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
    在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
    在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
    在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
    在 org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
    在 org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
    在 org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:673)
    在 org.springframework.orm.hibernate3.HibernateTemplate$16.doInHibernate(HibernateTemplate.java:751)
    在 org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
    ... 50 更多
    警告 [21:14:21] (CommonsLoggingOutput.java:59): - --Erroring: batchId[1] message[java.lang.reflect.UndeclaredThrowableException]

我的课是这样的:

 @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;
}

}

原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 584
1 个回答

您的 @Entity 类有一个 String 类型为其 @Id 字段,因此它无法为您生成 ID。

如果您将其更改为数据库中的自动增量和 Long 在 java 中,并添加 @GeneratedValue 注释:

 @Id
@Column(name="U_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long U_id;

它将为您处理递增的 id 生成。

原文由 Bohemian 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题