Pro repository test na Micronautovi jsem dostával chybu TransactionRequiredException Executing an update/delete query
při exekuci sql skriptu ze souboru.
@Inject lateinit var entityManager: EntityManager ... val fileNameString = "/db/script/$fileName" val sql = this::class.java.getResource(fileNameString)?.readText() entityManager.createNativeQuery(sql).executeUpdate()
Řešením bylo použití SessionFactory a transakcí
@Inject lateinit var sessionFactory: SessionFactory ... val fileNameString = "/db/script/$fileName" val sql = this::class.java.getResource(fileNameString)?.readText() sessionFactory.openSession() ?.let { session -> session.entityManagerFactory.createEntityManager() ?.let { entityManager -> entityManager.transaction.begin() entityManager.createNativeQuery(sql).executeUpdate() entityManager.transaction.commit() } }