Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

Cannot execute INSERT in a read-only transaction when extending auto-generated DAO classes

$
0
0

I have been using jOOQ for some time and all is good.I am using PostgreSQL as a database in spring boot application.I am using jOOQ Code generation to generate DAOs, POJOs etc..Also, using spring-boot-starter-jooq version 3.2.2 and it uses jooq version 3.18.9

Now I have to extend auto generated DAO like below:

@Repositorypublic class SomeRepositoryImpl extends SomeDao {    private final DSLContext dslContext;    public SomeRepositoryImpl(DSLContext dslContext) {        super(dslContext.configuration());        this.dslContext = dslContext;    }    public void save(Example example) {        insert(example);    }}

Mentioned above SomeDao, Example example are auto generated DAO and POJO respectively. insert() method from super class or auto generated DAO of jOOQ.

If I call someRepositoryImpl.save(example) from service layer, repository save throws error as below:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.jooq.exception.DataAccessException: SQL [insert into "public"."example" ("name", "domain", "description", "website", "language_id") values (?, ?, ?, ?, ?) returning "public"."example"."example_id"]; ERROR: cannot execute INSERT in a read-only transaction] with root causeorg.postgresql.util.PSQLException: ERROR: cannot execute INSERT in a read-only transaction    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponseand so on....

I am not using @Transactional(readOnly = true) anywhere in my code.

But, if I use mentioned below code in SomeRepositoryImpl then it works:

    @Transactional    public void save(Example example) {        insert(example);    }

Also, if I use mentioned below code which uses the generated DAO directly in service layer then it works:

@AutowiredSomeDao someDao;someMethod(Example example){someDao.insert(example);}
  • What am I missing and it throws exception?
  • Also in spring boot is this the best way to extend Dao and provide configuration?

Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>