Spring Boot Kotlin - Как я могу изменить HibernateJpaConfiguration.class? - PullRequest
0 голосов
/ 08 января 2019

Я работаю над приложением Kotlin Spring Boot для мониторинга энергопотребления в разных отделах нашего учреждения. Моя реализация ограничена устаревшей базой данных. Мы используем Gradle, и у меня есть только два тонких конфигурационных XML-файла, context-beans.xml и context-datasources.xml. Существует файл hibernate-config.xml (я говорю это, потому что этот файл появился в нескольких решениях, которые я нашел в Интернете).

Я начинаю с этого интерфейса:

interface EnergyHistory {
    var id: Int?
    var historyRequest: EnergyHistoryRequest?
    var endDate: LocalDate?
    var totalConsumption: Double?
    var onPeakConsumption: Double?
    var offPeakConsumption: Double?
    var shoulderPeakConsumption: Double?
    var therms: Double?
    var utilityCosts: Double?
    var accountNumber: String?
    var ldcId: Int?
}

Вот один из классов, который реализует из EnergyHistory:

@Entity
@Table(catalog = "energy_history", name = "dept1_energy_history")
data class Department1History(@Id @GeneratedValue(strategy = GenerationType.IDENTITY) override var id: Int? = null,
                              @ManyToOne @JoinColumn(name = "history_request_id", referencedColumnName = "id")override var historyRequest: EnergyHistoryRequest? = null,
                              @Column(name = "read_date") override var endDate: LocalDate? = null,
                              @Column(name = "kwh") override var totalConsumption: Double? = null,
                              @Column(name = "on_kwh") override var onPeakConsumption: Double? = null,
                              @Column(name = "off_kwh") override var offPeakConsumption: Double? = null,
                              @Column(name = "midKwh") override var shoulderPeakConsumption: Double? = null,
                              @Column(name = "therms") override var therms: Double? = null,
                              @Column(name = "total") override var utilityCosts: Double? = null,
                              @Column(name = "pod_id") override var accountNumber: String? = null,
                              @Column(name = "ldc_id") override var ldcId: Int? = null
) : EnergyHistory

Последним фрагментом кода, объясняющим проблему, является таблица EnergyHistoryRequest.

@Entity
@Table(catalog = "energy_history", name = "history_request")
data class EnergyHistoryRequest(@Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Int? = null,
                             @Column(name = "account_number") var accountNumber: String? = null,
                             @Column(name = "ldc_id") var ldcId: Int? = null,
                             var insertDate: LocalDate? = null,
                             var utilityType: String? = null)

ПРОБЛЕМА:

Проект компилируется, но во время выполнения я получаю следующую ошибку (elipses усекает трассировку стека до важных частей для удобства чтения):

Failed to load ApplicationContext
java.lang.IllegalStateException: Failed to load ApplicationContext
    . . .
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.institution.historyretrieval.domain.Department1AccountHistory.energyHistoryRequest references an unknown entity: com.institution.historyretrieval.EnergyHistoryRequest
    . . .
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.institution.historyretrieval.domain.Department1EnergyHistory.energyHistoryRequest references an unknown entity: com.institution.historyretrieval.EnergyHistoryRequest

Как обновить ресурс пути к классу [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class], включив в него класс EnergyHistoryRequest, если он не является XML-файлом, как в базовой Spring?

...