Почему поля класса домена (исходя из внешней зависимости) не созданы в базе данных, которая помечена grails.gorm.annotation.Entity - PullRequest
0 голосов
/ 13 июня 2019

Я пытался создать библиотеку класса домена (который использует зависимость от GORM, сборку Gradle), которую можно включить в качестве зависимости от моих приложений Grails, так как они являются общими классами домена, используемыми в трех приложениях Grails.

Цель состоит в том, чтобы иметь общий набор классов домена, а не копировать классы домена по всему приложению.

Но когда я использую это в моем другом приложении Grails, он создает таблицу в базе данных.из этого класса домена, но поле не создано.

Для достижения этой цели я создал приложение Gradle / Groovy, создал классы POJO в моем src / main / groovy / abc / xyz, аннотированном с помощью

grails.gorm.annotation.Entity

Я создаю приложение, публикую его в своем локальном репозитории m2, а затем использую его в качестве зависимости в моем другом приложении grails.

Это создаст таблицу в моей БД, но ей не удалось создать столбцы.Я пробовал аннотированные поля с

javax.persistence.Column

, но это также не работает.

import grails.gorm.annotation.Entity
import org.grails.datastore.gorm.GormEntity

@Entity
class People implements GormEntity<People> {

    @javax.persistence.Column public String firstName
    @javax.persistence.Column public String lastName

    static constraints = {
        firstName blank:false
        lastName blank:false
    }
}

при попытке создать экземпляр этого класса и сохранить его в БД из другого приложения Grails, я получил следующую ошибку:

Either class [adcomm.dom.People] is not a domain class or GORM has not been initialized correctly or has already been shut down. If you are unit testing your entities using the mocking APIs. Stacktrace follows:
java.lang.reflect.InvocationTargetException: null
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ExceptionInInitializerError: null
    at adcomm.ad.api.RestService.$tt__rssFeed(RestService.groovy:19)
    at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:96)
    at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:93)
    at adcomm.ad.api.RestController.index(RestController.groovy:14)
    ... 3 common frames omitted
Caused by: java.lang.IllegalStateException: Either class [adcomm.dom.People] is not a domain class or GORM has not been initialized correctly or has already been shutdown. If you are unit testing your entities using the mocking APIs
    ... 7 common frames omitted

Что я здесь делаю неправильно, так этоЕсть лучший подход или решение для этого.Пожалуйста, помогите / совет.

Спасибо Милан

...