我们有一个门,每辆车提交他的卡,然后我们减少他的帐户。
有些时候,当门务员打开拖车标签时,我们的数据库中有两个交换保存,而且在我们的数据库中,两个账户交换减少了两次,并且两个账户交换保存在我们的数据库中。
请帮助我知道如何阻止在我的数据库中保存2个相同的Exchange。 我如何测试这个版本是否正常工作?
我在我的程序中使用版本,如:
@Version private Long version = 0l
但是当我在ui中更改帐户时,此版本不会增加。在所有条件下,所有版本都保持为零。我不知道为什么会出现这个问题?
答案 0 :(得分:0)
写入数据库时可能会保存时间戳。每次更改记录之前,您都可以检查最后一次更改是否超过10秒 - 或者您的应用程序的任何时间差都是合理的。
答案 1 :(得分:0)
您可以在表中添加一个名为“version”的额外字段。默认情况下,它为0.每次获得对象时,都会在本地对象上将此版本增加1。如果要保存它,请使用ID = xxx和version = localversion-1替换对象。如果您找不到具有此条件的任何对象,则其他人已将其保存,因此版本已增加1。
也许Hibernate确实包含了这个,但不要引用我的话。
编辑: 我使用@version注释使Hibernate处理它。但我不知道是否需要进一步配置。