jdbi/jdbi

Transaction not work on DAO bean without an attachment.

Aperta

#2670 aperta il 18 apr 2024

 (5 commenti) (0 reazioni) (0 assegnatari)Java (324 fork)batch import
help wantedon holdspringwaiting-for-op

Metriche repository

Star
 (1745 stelle)
Metriche merge PR
 (Merge medio 1g 10h) (6 PR mergiate in 30 g)

Descrizione

    @Autowired
    private FooDao fooDao;
    @Autowired
    private BarDao barDao;
    @Autowired
    private Jdbi jdbi;
    
    public saveFooBar1() {
        jdbi.useTransaction(handle -> {
//            transaction not open
            long insertedId = fooDao.insert(new Foo()); 
            barDao.insert(new Bar(insertedId)); // open transaction because BarDao.insert() have @Transaction
        });
    }

    public saveFooBar2() {
        jdbi.useTransaction(handle -> {
            FooDao fooDao = handle.attach(FooDao.class);
            BarDao barDao = handle.attach(BarDao.class);
 //            transaction open
            long insertedId = fooDao.insert(new Foo());
            barDao.insert(new Bar(insertedId)); // transaction not open despite BarDao.insert() have @Transaction
        });
    }

in the case of saveFooBar1(), is this the expected behavior or am I doing something wrong? I Expected behavior as in saveFooBar2() method

Guida contributor