@Adrenal1ne1

Почему не инициализируется репозиторий JPA?

Добрый день!
Пробую связку kotlin - spring boot 2 - jpa
Набросал простенькую програмку, но при запуске получаю ошибку при инициализации репозитория JPA. Что сделал не правильно ? Помогите исправить ошибку ?
Спрингбутом до этого не пользовался, хочу освоить его. Вебом пользоваться в этой проге не собираюсь, с вебом пересмотрел много примеров, но ответ на свой вопрос не нашел.
2018-12-21 13:26:02.732  INFO 28188 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect
2018-12-21 13:26:02.923  INFO 28188 --- [           main] o.h.e.j.e.i.LobCreatorBuilderImpl        : HHH000421: Disabling contextual LOB creation as hibernate.jdbc.lob.non_contextual_creation is true
2018-12-21 13:26:02.929  INFO 28188 --- [           main] org.hibernate.type.BasicTypeRegistry     : HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@396ef8b2
2018-12-21 13:26:03.335  INFO 28188 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2018-12-21 13:26:04.150  INFO 28188 --- [           main] r.k.v.VkUsersSkillApplicationKt          : Started VkUsersSkillApplicationKt in 4.348 seconds (JVM running for 4.905)
Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property vkUserRepository has not been initialized
	at ru.program.vkUsersSkill.VkUsersSkillApplicationKt.main(VkUsersSkillApplication.kt:17)

Программа:

VkUser.kt
import javax.persistence.Column
import javax.persistence.Entity
import javax.persistence.Id
import javax.persistence.Table

@Entity
@Table (name = "vk_users")
data class VkUser(
    @Id
    @Column(name = "user_id")
    var userId: Long = 0L,

    @Column(name = "access_token")
    var accessToken: String = "",

    @Column(name = "alias")
    var alias: String = "",

    @Column(name = "login")
    var login: String = "",

    @Column(name = "password")
    var password: String = ""
)


VkUserRepository.kt
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
import ru.program.vkUsersSkill.models.VkUser

@Repository
interface VkUserRepository: JpaRepository<VkUser, Long>


VkUsersSkillApplication.kt
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import ru.program.vkUsersSkill.repositories.VkUserRepository

@Autowired
lateinit var vkUserRepository: VkUserRepository

@SpringBootApplication
class VkUsersSkillApplication

fun main(args: Array<String>) {
	runApplication<VkUsersSkillApplication>(*args)
	vkUserRepository.findAll()
}
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
@Adrenal1ne1 Автор вопроса
Создаём стартовый бин, в котором всё будем запускать.

@Component
class StartHere {
@Autowired
lateinit var vkUserRepository: VkUserRepository
fun runHere() {
var users = vkUserRepository.findAll()
println(users)
}

//TODO здесь пишем нужный нам код
}
Затем получаем 'application context' в переменную и затем получаем наш стартовый бин и запускаем его содержимое функцией runHere.

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import ru.program.vkUsersSkill.init.StartHere

@SpringBootApplication
class VkUsersSkillApplication

fun main(args: Array) {
val context = runApplication(*args)
val start = context.getBean(StartHere::class.java)
start.runHere()
}
Теперь всё запускается без проблем и с помощью Spring-Jpa получаем данные из базы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 250 000 руб.
Dialog Москва
от 180 000 до 240 000 руб.
20 июн. 2019, в 20:54
26000 руб./за проект
20 июн. 2019, в 20:52
100 руб./за проект
20 июн. 2019, в 18:56
1000 руб./в час