Eu tenho um projeto que estava convertendo partes para kotlin, nesse projeto eu tenho um useCase de criar unidade, porém quando eu coloco o @Transactional em cima de um método eu tenho o seguinte erro:
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class br.senai.sp.sgjd.application.usecases.unities.CreateUnityUseCase: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class br.senai.sp.sgjd.application.usecases.unities.CreateUnityUseCase
class:
@Component
class CreateUnityUseCase(
private val repository: UnityRepository,
private val mapper: UnityBoundaryMapper
) {
@Transactional
fun execute(input: CreateUnityRequest): Unity {
validateDuplicateResource(input)
val unity = mapper.toEntity(input)
return repository.save(unity)
}
private fun validateDuplicateResource(input: CreateUnityRequest) {
val alreadyExists = repository.findByNameOrCode(input.name, input.code).isPresent
if (alreadyExists) throw DuplicatedResourceException(Unity::class.java)
}
}
e se eu marcar a classe como open
no hora que faz a chamada pro repository da null pointer como se o repository n fosse injetado direito, mas não faz sentido eu ter que marcar essa classe como open, help alguém!!