本文介绍了对于UUID类型列,在插入新行时返回H2数据库中默认生成的主键值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,使用UUID数据type作为表的主键,并在插入新记录时要求h2generate each UUID value by default,如何获取新生成的UUID值?,我在Java应用程序中使用纯JDBC 4.x,如果这对解决方案有帮助的话。,I KnowSCOPE_IDENTITY
函数为在标记为IDENTITY
的列上为自动递增的序列号生成的键返回long
。但我使用UUID而不是递增数字作为我的主键列类型。,如注释和correct Answer by YCF_L所示,解决方案在于标准的JDBC:CallStatement::getGeneratedKeys
。这将生成该语句的上一次使用中默认生成的键值的ResultSet
。它与PreparedStatement
配合使用,并将自动生成的UUID值作为主键。,问题是,在默认情况下,而不是获取的是生成的密钥。您必须通过向Connection::prepareStatement
调用传递额外参数来激活此功能。额外的参数是int
,使用Statement
接口上定义的常量Statement.RETURN_GENERATED_KEYS
。在现代Java中,这很可能被定义为Enum
,但JDBC可以追溯到Java最早的日子,所以参数是一个简单的int
。,这是一个完整的示例应用程序,在一个文件中。,运行时。,如果您希望一次插入多行,而不是一行,请使用批处理。请参阅:Java: Insert multiple rows into MySQL with PreparedStatement。,如果您有多个自动生成的列,而不仅仅是此处看到的单个UUID列,请参阅other Answer by YCF_L。,这篇关于对于UUID类型列,在插入新行时返回H2数据库中默认生成的主键值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,