小编Flo*_*000的帖子

“只读模式下不允许写入操作”错误:与 Spring @Service @transaction @Repository 和 Hibernate 混淆

我正在使用 Spring 和 Hibernate 开发一个现有项目,并且很困惑,因为我得到了一个

org.springframework.dao.InvalidDataAccessApiUsageException:只读模式下不允许写入操作(FlushMode.MANUAL):将会话转换为FlushMode.COMMIT/AUTO或从事务定义中删除“readOnly”标记。

尝试保存对象时出错,但我仍然找不到到底出了什么问题。

有一个使用 注释的服务层@Servicesave一个应该是事务性的方法,因此它使用 注释@Transactional(readOnly = false)。对我来说,这意味着 spring 应该自己处理事务。

@Service
public class LadyService {
    Logger log = Logger.getLogger(LadyService.class);
    @Autowired
    private PictureDAO pictureDao;
    @Autowired
    private LadyDAO ladyDao;
    @Autowired
    private AddressDAO addressDao;

    @Transactional(readOnly = false)
    public void save(Lady lady) {
        Address a = addressDao.getExistingAddress(lady.getAddress());
        if (a == null) {
            a = addressDao.save(lady.getAddress());
        }
        lady.setAddress(a);
        ladyDao.save(lady);
        pictureDao.savePictures(lady.getPictures());
    }
Run Code Online (Sandbox Code Playgroud)

在进行保存时会发生错误AddressDAO。它被注释为@Repository.

@Repository
public class AddressDAO extends HibernateDaoSupport {

    public Address …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate transactions

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

标签 统计

hibernate ×1

java ×1

spring ×1

transactions ×1