gpt4 book ai didi

java - 确保 Hibernate session 中的唯一序列号

转载 作者:行者123 更新时间:2023-12-01 04:22:32 26 4
gpt4 key购买 nike

我正在编写一个系统,该系统包含一个名为 Voucher 的 hibernate 管理实体,该实体有一个名为 serialNumber 的字段,该字段包含唯一存在的 有效副本。数据库表中也可能存在旧的无效副本,这意味着数据库字段可能未声明为唯一。保存新的有效凭证实例(需要新的序列号)的操作首先在适当的实体上同步。此后,整个过程被封装在一个事务中,新值由 JPQL 获取

    SELECT MAX(serialNumber) + 1 FROM Voucher

字段从查询中获取结果,此后保存实例,刷新 session ,提交事务,代码最终离开同步块(synchronized block)。

尽管如此,数据库有时(如果很少)最终会出现带有重复序列号的优惠券。

我的问题是:考虑到我对同步和事务处理相当有信心,是否有任何明显的事情我应该了解我错过的 hibernate ,或者我应该返回到另一个调试 session ,尝试找到导致问题的其他原因吗?

运行保存进程的服务是一个运行在tomcat6上的Web应用程序,由Spring的HttpRequestHandlerServlet管理。数据库连接由 C3P0 汇集,运行非常基于默认的配置。

我很感激任何建议

谢谢

最佳答案

您可以使用 MultipleHiLoPerTableGenerator :它在当前事务之外生成@Id

关于java - 确保 Hibernate session 中的唯一序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com