Java-休眠:hbm2ddl.auto =更新和自动递增
作者:互联网
如果Table没有auto_increment,则如果我尝试在Table中插入某些内容,将抛出异常“ org.hibernate.HibernateException:数据库未返回任何本机生成的标识值”. ID的映射方式如下:
@Id @GeneratedValue
private int id;
我虽然有hbm2ddl.auto = update.不幸的是,通过验证,它没有在目标表上设置AUTO_INCREMENT.如果没有HQL,并且没有本机SQL,我能否达到目标?
解决方法:
hbm2ddl设置与Identity GenerationType无关.
您可以编写自己的ID /密钥生成器类,然后让Hibernate知道您自己的密钥生成器类.然后,休眠将从您自己的生成器获取身份.
您可能要看的一些文章:
http://blog.anorakgirl.co.uk/?p=43
http://www.devx.com/Java/Article/30396/0/page/3
生成ID的逻辑取决于您的要求.最简单的方法是max(id)1,您可以缓存max(id)以提高性能.好吧,如果您在群集环境中运行应用程序,则必须注意线程安全问题以及缓存同步问题.
顺便说一句,您正在使用哪个数据库?
更新
打开http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#mapping-declaration-id,然后搜索“ 5.1.2.2.1.各种其他生成器”,如果您的应用程序未在集群中运行,请尝试使用生成类型“增量”.
标签:hibernate,auto-increment,java 来源: https://codeday.me/bug/20191102/1988834.html