gpt4 book ai didi

java - 使用 hibernate 从表中获取最大数量

转载 作者:行者123 更新时间:2023-12-01 14:36:01 27 4
gpt4 key购买 nike

当我创建一个对象时,我需要查看database.object并找到表中该对象的最大键。当我找到最大数量时,我需要将其增加 1,并且我的新对象将拥有该新 key 。这些键依赖于对象类型,并且类型有很多,所以我不能使用 id。

示例:表对象

Id, Name, Type, Key
1, One, T1, 6
2, Two, T1, 3
3, Three, T2, 88
4, Four, T1, 101

我面临的问题:更多的用户可以创建新对象(并且有一些计算,所以这个操作不是很快),有时两个或更多用户最终会得到相同的 key ?!

使用 jdbc,我可以使用 SELECT .. FOR UPDATE 并锁定表。

是否有任何推荐的解决方案如何使用 hibernate 来实现此目的?

谢谢

最佳答案

您需要一个 ACID operation当您在数据库中保存新值时。访问所需字段的最大数量以及新 ID 创建和提交操作的数量应该是单个单元且 Transactions提供此功能。

我不确定您的配置。您可以使用Hibernate Transactions .

您可以访问最大行值,这也有一些条件。另请参阅the docs .

public Long maxRowValue()
{

Criteria crit = sess().createCriteria(YourEntity.class);
crit.setProjection(Projections.max("Key"));
crit.add( Restrictions.eq("Type", 1));
List<Long> teams = crit.list();
return teams.get(0);

}

附注我不知道你的配置细节。代码应相应更改。

关于java - 使用 hibernate 从表中获取最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482660/

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