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()
}
}