小编vul*_*ul6的帖子

悲观锁定中的OptimisticLockException

我正在使用Spring和Hibernate.我正在运行jUnit测试,如下所示:

String number = invoiceNumberService.nextInvoiceNumber();
Run Code Online (Sandbox Code Playgroud)

和invoiceNumberService方法是:

InvoiceNumber invoiceNumber = invoiceNumberRepository.findOne(1L);
Run Code Online (Sandbox Code Playgroud)

它使用简单的spring数据存储库方法,并且运行良好.但是当我重写此方法以使用锁定时:

@Lock(LockModeType.PESSIMISTIC_READ)
@Override
InvoiceNumber findOne(Long id);
Run Code Online (Sandbox Code Playgroud)

我收到"javax.persistence.OptimisticLockException:Row被另一个事务更新或删除"

我无法理解为什么它的乐观锁定异常,而我使用的是悲观锁定?当另一个交易正在改变这个实体时,这个部分在哪里?我已经挖了很多类似的问题,我非常绝望.感谢您的帮助

解决方案:
问题出在我的测试类的init函数中:

@Before
public void init() {
    InvoiceNumber invoiceNumber = new InvoiceNumber(1);
    em.persist(invoiceNumber);
    em.flush();
}
Run Code Online (Sandbox Code Playgroud)

缺乏

em.flush();
Run Code Online (Sandbox Code Playgroud)

这将数据保存到数据库中,因此findOne()现在可以对其进行检索

java spring hibernate java-ee

9
推荐指数
1
解决办法
983
查看次数

多个否定的配置文件

我的问题是我有应用程序,它使用Spring配置文件.在服务器上构建应用程序意味着配置文件设置为" wo-data-init".对于其他构建,有" test"配置文件.当它们中的任何一个被激活时,它们不应该运行Bean方法,所以我虽然这个注释应该工作:

@Profile({"!test","!wo-data-init"})
Run Code Online (Sandbox Code Playgroud)

它似乎更像是在运行if(!test OR !wo-data-init),在我的情况下我需要它运行if(!test AND !wo-data-init)- 它甚至可能吗?

java spring

5
推荐指数
2
解决办法
2188
查看次数

无法添加对wix项目Visual 2012的引用

在关于 WiX 的每个教程和 HowTo 网站(如此处)中,我读到我应该添加对其他项目的引用,但是当我选择“添加引用”时,“项目”选项卡中的“项目”列表中没有任何内容。我在 Visual Studio 2012 上尝试过此操作,之前使用 WiX 3.7,现在使用 3.8。

如果有解决方案只是不使用“添加引用”功能,我该如何以其他方式构建?我是初学者,所以我真的不知道如何在没有此功能的情况下使用 WiX,如果我在发布向导中发布了我的 C# 应用程序,我应该将所有生成的文件添加到组件组中,每个文件都在<Component>标记中?

wix wix3 visual-studio

4
推荐指数
1
解决办法
2564
查看次数

标签 统计

java ×2

spring ×2

hibernate ×1

java-ee ×1

visual-studio ×1

wix ×1

wix3 ×1