获得下一个ID

时间:2009-12-07 17:10:38

标签: mysql nhibernate

我的问题是如何在mysql数据库中使用NHibernate为自动增量ID列获取下一个id?

谢谢,

3 个答案:

答案 0 :(得分:2)

根据您在下面给出的进一步说明(作为答案?),在我看来,您确实在寻找NHibernate功能来自动读回数据库生成的ID:identity

这将告诉NHibernate ID的值是由数据库在插入时确定的,它不会发送一个值作为其INSERT语句的一部分,并且它将在执行插入后读回ID列的值。但是你必须告诉数据库(在表定义中)它应该为插入的每个记录自动生成ID列的值...

答案 1 :(得分:0)

如果你这样做,你将创造一个竞争条件。为了回答你的问题,我认为Hibernate没有一种特定的方式来提供这些信息,因为没有应用程序可以提供这些信息。通过获取“下一个id”,当它将数据返回给您时,它可能已经无效。我能想到的最简单方法是获取last_insert_id()并为其添加+1。

为什么不发布有关您正在尝试完成的更多信息,我们可以为您找到更好的解决方案?

答案 2 :(得分:0)

如果您是数据库的唯一编写者,那么您可以让应用程序为您维护序列号并自行分配下一个号码。

如果您想这样做,那么您需要确保您的应用程序计数器是线程安全的。

在重新启动应用程序时,您还需要一种方法来获取最后写入的序列号。