使用hibernate在MySql DB表中进行行级锁定

时间:2014-09-18 10:09:19

标签: java mysql hibernate

我是Hibernate的新手,这是我在stackoverflow中的第一篇文章。 我使用Hibernate 3.3.2 GA和MySql作为数据库。

这是我的问题:

我正在读取状态='N'的数据库表的记录。

List sendSmsPropertiesList=hbSession.createQuery("from TSendSms where status='N' ").setMaxResults(1).list();

我有两个线程使用上面的sql访问同一个表来从DB获取状态='N'的记录(例如,如果有3条状态='N'的记录,第一个线程应该获取第一个记录,第二个线程应该获取第一个记录线程应该获取第二条记录)。但两者都取得相同的记录(第一记录)。这里我需要在一个线程获取一个线程后锁定表行,当第二个线程到来时它应该转到第二行。

你可以帮助我解决上面的例子吗?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

将状态修改为'Y'或将其更新到某处,以便处理相同的记录。从代码和最佳方式来看,如果你不能修改它就更新它的状态,那么为它添加一个新列。