Java hibernate使用spring事务服务在不同的项目上锁定行

Java hibernate使用spring事务服务在不同的项目上锁定行,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,很抱歉,我无法决定如何表达这个问题 我有两个项目使用相同的ms sql server数据库。两者都是spring项目,spring正在处理事务 在一种情况下,第一个项目正在创建一个实体对象,然后使用rest服务将其id发送给另一个项目。例如: Message message = new Message(); <filling message's properties> sessionFactory.getCurrentSession().save(message); String u

很抱歉,我无法决定如何表达这个问题

我有两个项目使用相同的ms sql server数据库。两者都是spring项目,spring正在处理事务

在一种情况下,第一个项目正在创建一个实体对象,然后使用rest服务将其id发送给另一个项目。例如:

Message message = new Message();
<filling message's properties>
sessionFactory.getCurrentSession().save(message);
String url = <proper url>
MultiValueMap<String, String> mvm = new LinkedMultiValueMap<String, String>();
mvm.add("id", message.getId());
String response = restTemplate.postForObject(url, mvm, String.class);
message.setStatus("Send to service");
sessionFactory.getCurrentSession().saveOrUpdate(message);

假设你想坚持你目前的方法,确保第一次打电话

sessionFactory.getCurrentSession().save(message);
第二个电话呢

sessionFactory.getCurrentSession().saveOrUpdate(message);

在第一个项目中完成的两个任务都使用不同的会话。这样hibernate就不会锁定任何行。根据您使用Spring的方式,您可以通过在第一个项目中使用两个事务括号来实现两个sessoin。

这两个调用在不同的类上,保存后,我从不同的bean调用了一个名为sendToRest的方法,其余代码都在该方法上。您介意扩展您的问题吗?您选择了什么策略来管理hibernate会话,即什么类型的CurrentSessionContext处于活动状态?您的会话是否与JTA事务、threadlocal等关联。。。?
sessionFactory.getCurrentSession().save(message);
sessionFactory.getCurrentSession().saveOrUpdate(message);