您的位置:首页 > 理论基础 > 计算机网络

J2EE进阶(十九)FileNotFoundException: http://hibernate.org/dtd/hibernate-mapping-3.0.dtd

2016-12-29 20:41 441 查看

J2EE进阶(十九)Nested exception: java.io.FileNotFoundException: http://hibernate.org/dtd/hibernate-mapping-3.0.dtd

  在调试过程中,莫名奇妙的出现了“Nested exception:java.io.FileNotFoundException: http://hibernate.org/dtd/hibernate-mapping-3.0.dtd”的错误,截图如下:



  对于这一错误,查看错误提示可知,是由于“http://hibernate.org/dtd/hibernate-mapping-3.0.dtd%20”文件找不到造成的。之前也没有找不到这一文件啊。由于是获取网络文件,怀疑是网络造成的问题,可是网络链接良好。从网上搜寻答案,一番折腾一无所获,回去继续看错误报告,结合错误源文件,发现了下面的异常。



  原来是由于不知何时手误将“http://hibernate.org/dtd/hibernate-mapping-3.0.dtd%20”的后面多加了一个空格,导致文件找不到了。我只想说“这也可以?”将空格删除之后,问题得到解决。

  后期经过确认,是由于利用Hibernate的反向工程生成.hbm.xml文件时多加的一个空格,坑!

附 org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()

  分析及解决:

  要操作的数据表中的id(即主键)的类型设置成了“自动增长类型”,而在你的

hibernate.cfg.xml中,id的生成方式是assigned,即

<id name="id" type="integer">
column name="id" />
<generator class="assigned" />
</id>


  这种搭配是矛盾的!因为主键的assigned生成方式由程序自动生成表的主键,即在你的测试程序中要调用setId()方法,且必须在调用save()前调用(或者说在调用save()前必须指定id,其实就是说,主键值不能为空!)。

  把主键的生成方式改为native,它的特征是能够根据底层数据库自动选择主键生成方式。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐