gpt4 book ai didi

sql-server - hibernate 锁表

转载 作者:行者123 更新时间:2023-12-02 17:26:24 26 4
gpt4 key购买 nike

Seam 2.2、Jboss 6.1、hibernate 3.5.6 和 MSQL Server 2008

并且有这样的功能。

public void deliverFile() {
EntityManager jobbEntityManager = (EntityManager)Component.getInstance("jobbEntityManager");

JobbStatusInterface jobbStatus = new JobbStatus();
jobbStatus.setStatus(PluginStatus.INITIATED);
jobbEntityManager.persist(jobbStatus);


/**

Code here to save a file that takes a minutes
**/





jobbStatus.setStatus(PluginStatus.DONE);
jobbEntityManager.flush();





}
public void checkJobb(){
EntityManager jobbEntityManager = (EntityManager)Component.getInstance("jobbEntityManager");

jobbEntityManager.createQuery("from JobbStatus", JobbStatus.class).getResultList();


}

我每 10 秒对 checkJobb 进行一次轮询,以便判断是否执行了 DeliveryFile() 函数。

checkJobb 排队并在查询处停止,因此当deliveryFile() 函数完成时,它会立即完成所有6 个checkJobbs()。

即使我直接从数据库中选择,它也会被锁定并在deliveryFile()完成后完成查询。

有什么办法可以解决这个问题,以便我可以在执行 DeliveryFile 时执行 checkJobb() 吗?

最佳答案

不确定您想要使用上面的代码实现什么目的。如果您想通过加载中间的作业状态来检查作业是否已启动......这可能是不可能的。由于数据尚未提交,并且您在其他函数中使用不同的 session ..您可能无法看到数据。

只有状态的最后一个值才会提交到数据库。

关于sql-server - hibernate 锁表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10141138/

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