swrer
2008-08-03 12:41
浏览 486
已采纳

hibernate string型为主键问题

数据库为mysql,主键设为string型的fileName,然后在hbm.xml中设置
到session.save()时出现下列异常:

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.demo.model.UserFiles
at org.hibernate.id.Assigned.generate(Assigned.java:33)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:99)
(下略)
基本上就是存储时主键fileName这个字段没有默认值,无法保存;看来是fileName没有被识别出来,但是程序中我都明明.SetFileName().
还有hibernate操作int型主键时就没问题,对string型主键不知应该如何处理?
[b]问题补充:[/b]
to ag_sherry
那是不是数据表还必须设置一个id字段?hibernate会自动为你生成一个32位的无重复的id,不理解,感觉string还不是主键,反倒这个无重复的id是主键了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • hglxr 2008-08-04 13:55
    已采纳


    有了这个设置后,hibernate不会自动为为你生成id

    在save前,你必须手动给id赋值。

    主键设置为string,你可以考虑uuid,hibernate会自动为你生成一个32位的无重复的id,这样设置就可以了:

    点赞 评论
  • qichunren 2008-08-03 14:23

    看异常抛错是说"在保存前必须设计主键",你可以在save()方法的前面用system.out的打印出对象的filename看是不是空的.
    [quote]还有hibernate操作int型主键时就没问题,对string型主键不知应该如何处理? [/quote]

    这个没有什么区别!

    点赞 评论
  • iteye_5601 2008-08-05 13:34

    同意楼上的回答 uuid自动生成字符型主键

    点赞 评论

相关推荐 更多相似问题