我是 Spring 新手,正在尝试使用 Spring 数据创建六边形架构
我有一个 gradle 多模块设置,其中包含域的包,一个用于持久性,另一个用于配置,DddApplication 所在的位置。
启动它时,我得到Not a managed type: class com.example.ddd.domain.model.Customer
,除非我用 javax.persistence.@Entity 等注释类。
但是我不想在课堂上添加注释。persistence
我已经在包中的 hibernate.cfg.xml 和 Customer.hbm.xml 中设置了实体。
我认为 spring boot 没有使用其他包中的 hibernate.cfg.xml 。
有什么方法可以配置 Spring Boot 以根据persistence
包中的 hibernate.cfg.xml 识别实体?
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
包的资源中。