1

私はSpringが初めてで、春のデータで六角形のアーキテクチャを作成しようとしています

ドメイン用のパッケージ、永続化用のパッケージ、および DddApplication が存在する構成用の gradle マルチモジュール セットアップがあります。

Not a managed type: class com.example.ddd.domain.model.Customerクラスに javax.persistence.@Entity などのアノテーションを付けない限り、起動時に を取得します。

ただし、クラスに注釈は必要ありません。persistenceパッケージの hibernate.cfg.xml と Customer.hbm.xml にエンティティを設定しました。

スプリング ブートは他のパッケージの hibernate.cfg.xml を使用していないと思います。

persistenceパッケージ内の hibernate.cfg.xml に基づいてエンティティを認識するように Spring Boot を構成する方法はありますか?

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パッケージのリソースにあります。

4

2 に答える 2