Using external lib/gradle dependency lib of domain class as GORM class for a Grails 3 application

15 views
Skip to first unread message

Milan Dalsaniya

unread,
Jul 8, 2019, 4:20:40 AM7/8/19
to Grails User Group

I have been trying to create a lib of domain class(which uses GORM dependancy, Gradle build) which can be included as a dependency to my Grails Applications, as they are common domain classes used across three grails applications.


The goal is to have a common set of domain class rather than copying domain classes across the application.

But when I use this into my other Grails application, it creates a table into the database from that domain class but field are not created.

To achieve this goal, I have created a Gradle/Groovy application, created POJO classes in my src/main/groovy/abc/xyz Annotated with

grails.gorm.annotation.Entity

I build the application, publish it into my local m2 repo, and then use it as a dependency in my other grails application.

This will then create a table into my DB but it failed to create columns. I tried annotated fields with

javax.persistence.Column

but this is not working as well.

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
    }
}

when tried to create an instance this class and save it to DB from other grails application, I got the following error.

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


What am I doing wrong here, is there a better approach or solution for this. Please help/advice.


Thank you Milan


Reply all
Reply to author
Forward
0 new messages