-
-
Save graemerocher/c25ec929d9bcd1adcbea to your computer and use it in GitHub Desktop.
@Grab("org.grails:grails-datastore-gorm-hibernate4:3.0.0.RELEASE") | |
@Grab("org.grails:grails-spring:2.3.6") | |
@Grab("com.h2database:h2:1.3.164") | |
import grails.orm.bootstrap.* | |
import grails.persistence.* | |
import org.springframework.jdbc.datasource.DriverManagerDataSource | |
import org.h2.Driver | |
init = new HibernateDatastoreSpringInitializer(Person) | |
def dataSource = new DriverManagerDataSource(Driver.name, "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE", 'sa', '') | |
init.configureForDataSource(dataSource) | |
println "Total people = " + Person.count() | |
@Entity | |
class Person { | |
String name | |
static constraints = { | |
name blank:false | |
} | |
} |
Will this work with JPA / Hibernate entities? Or not that lucky?
It is available now... Released s part of grails 2.3.6.
somebody knows how to use it into a dropwizard project? following the sample of tomas lin in restful web services with dropwizard and groovy
ok having a problem with this
you indicate that you can package binary grails plugin - i tried that and generated a couple of domain classes and generated a jar.
copyied that into gradel script project - and included the jar into the classpath
when you try and use the domain classes though i get this error
Caught: java.lang.NoClassDefFoundError: Lorg/codehaus/groovy/grails/plugins/web/api/ControllersDomainBindingApi;
java.lang.NoClassDefFoundError: Lorg/codehaus/groovy/grails/plugins/web/api/ControllersDomainBindingApi;
at com.softwood.TestScript.run(TestScript.groovy:28)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.grails.plugins.web.api.ControllersDomainBindingApi
... 1 more
presumably because the plugin includes all sorts of controller/web stuff - which to use the domain classes i dont need
without having to put all your entity models outside of grails, how can you bootstrap grails from scripts in a grails project? when you try and run a script - it says your outside of grails and wont let you use the domain classes in your project without starting the web server.
i'd like to use the gorm elements without loading the full grails env runtime
how do i do that?
You can compile the domain classes separately in a Gradle or Maven project. See for example
https://github.com/spring-guides/gs-accessing-data-gorm/tree/master/complete
Note that the project uses Spring Boot, but you can omit the boot parts if you don't want it
Hi guys,
I'm giving a go using GORM outside Grails and the documentation is quite sparse, especially when not using Spring-Boot and around the unit testing. Grails has tons of test mixins around GORM. Is there a strategy to adopt when testing GORM outside Grails?
OK, it works like we have in this script, but if I increment a little bit the example something does not work as expected, example, the GORM does not inject addTo method to the class, see
@entity
class Person {
String name
Profile profile
static hasMany = [contacts:Contacts]
static constraints = {
name blank:false
}
}
@entity
class Profile {
String name
}
@entity
class Contacts {
static belongsTo = [person: Person]
String name
}
Profile profile = new Profile(name: "Profile1")
profile.save(flush: true)
Person p = new Person(name: "RODRIGO", profile: profile)
p.addToContacts(name: "contact1")
if(!p.save()){
puts p.errors
}
println "Total people = " + Person.count()
it reproduces the message : groovy.lang.MissingMethodException: No signature of method: Person.addToContacts() is applicable for argument types: (java.util.LinkedHashMap) values: [[name:contact1]]
Possible solutions: getContacts()
See? is there any workaround?
There is quite a number of failures with this if trying to use it with 5.0.0.M1
Looking forward to it! This was my number 1 gripe with grails.... I couldn't use it for scripting or other apps! Will this be in 2.4?