@Transactional(readOnly = false,propagation = Propagation.REQUIRED)抛出异常

时间:2014-04-23 11:44:13

标签: java spring hibernate

我正在使用spring with hibernate并使用spring transaction manager。我有下面的方法,从另一个事务方法调用。

@Transactional (readOnly = true, propagation = Propagation.REQUIRED)
public Map<String, String> getAllProperties ()
{  }

我面临的问题是;如果我运行这个我得到以下异常

Could not commit Hibernate transaction; nested exception is org.hibernate.TransactionException: commit failed

但是,如果我将注释更改为打击注释或删除注释属性,它就可以正常工作

 @Transactional (readOnly = false, propagation = Propagation.REQUIRED)
public Map<String, String> getAllProperties ()
{  }

我感觉有点奇怪,因为我只更改了readOnly属性。

有人可以解释一下

2 个答案:

答案 0 :(得分:4)

如果要修改数据库中的某些数据,则readOnly = true无法修改。 如果你想要检索一些数据集,那就好了。

所以说到UPDATEINSERT使用readOnly = false

好运。

答案 1 :(得分:0)

您似乎正在修改getAllProperties()方法中从hibernate接收的列表/对象。

如果您提供有关实施的更多详细信息,这将有所帮助。

同时,不要对Hibernate返回的列表/对象执行任何操作(get *操作除外)。 即使您从列表中删除了一个元素(用于过滤),也会尝试更改数据库中的基础值。