Я новичок в Spring и пытаюсь создать гексагональную архитектуру с данными Spring
У меня есть многомодульная установка с включенным пакетом для домена, одна для постоянства, а другая для конфигурации, где живет DddApplication.
При запуске я получаю Not a managed type: class com.example.ddd.domain.model.Customer
, если я не аннотирую класс с помощью javax.persistence. @ Entity et c.
Однако я не хочу аннотаций в классе. Я настроил сущности в hibernate.cfg. xml и Customer.hbm. xml в пакете persistence
.
Я думаю, что при весенней загрузке не используется hibernate.cfg. xml из другой пакет.
Можно ли каким-то образом настроить Spring Boot для распознавания объектов на основе hibernate.cfg. xml в пакете persistence
?
package com.example.ddd.configuration
// ...
@SpringBootApplication
@EntityScan("com.example.ddd.domain.model")
@EnableJpaRepositories("com.example.ddd.persistence.repository")
class DddApplication {
private val log: Logger = LoggerFactory.getLogger(DddApplication::class.java)
@Bean
fun loadData(repository: CustomerRepositoryJpa): CommandLineRunner? {
return CommandLineRunner { args: Array<String?>? ->
//...
}
}
}
fun main(args: Array<String>) {
runApplication<DddApplication>(*args)
}
package com.example.ddd.persistence.repository
//...
@Repository
interface CustomerRepositoryJpa : JpaRepository<Customer?, Long?> {}
package com.example.ddd.domain.model
open class Customer private constructor() {
val id: Long? = null
lateinit var firstName: String
lateinit var lastName: String
override fun toString(): String {
return String.format("Customer[id=%d, firstName='%s', lastName='%s']", id,
firstName, lastName)
}
companion object {
fun new(firstName: String, lastName: String) : Customer {
val e = Customer()
e.firstName = firstName
e.lastName = lastName
return e
}
}
}
application.properties и hibernate.cfg. xml находятся в ресурсах пакета persistence
.