1

我目前在无状态会话中执行事务有问题。@Transactional里面的无状态会话

在服务层上,我定义了使用@Transactional注释(因为方法需要在一个事务中)所需的事务。 在该方法内部,我创建了新实体Car。 不过我也有衬垫的方法无状态会话(其履行完成)内定制transtaction这样

StatelessSession session = getSessionFactory().openStatelessSession(); 
Transaction transaction = session.beginTransaction() 

// create and setup CarRequirements entity 

transaction.commit; 

问题创造的是,实体CarRequirements有外键实体Car。因此,当我尝试提交下层事务时会发生异常,因为显然Car实体尚未提交到数据库。

有没有办法推迟下层事务的提交或强制提交Car实体?

+0

这些实体如何映射? – davidxxx

+0

@davidxxx CarRequirement有引用汽车主键的外键 – toucheqt

回答

2

任你定义CarRequirements和汽车(级联) 之间的关系,或者你必须首先节省了汽车,然后保存CareRequirements

+0

级联对我来说不是一种选择,因为这些实体已经有关系(CarRequirement有引用Car的主键的外键).. 至于其他建议,我我首先保存了Car,但是因为它在事务性注释中,所以比在无状态会话内提交的CarRequirement更迟。 现在我通过将方法拆分为两个来解决它。一个由事务性注释标记并创建并提交的车,另一个在无状态会话中创建CarRequirements实体。它以这种方式工作,但我不喜欢把它分开。 – toucheqt