编程语言
首页 > 编程语言> > Java-休眠:hbm2ddl.auto =更新和自动递增

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

Hibernate ID Generator

生成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