Mapping with Hibernate Annotations in Grails 3.0.1 -
how can map domain class annotations in grails 3.0.1?
the following steps didn't work me.
step 1. have created new application grails 3.0.1 (grails create-app books
).
step 2. described in mapping hibernate annotations have created new class in src/main/com/books/book.groovy
(tried src/main/groovy/com/books/book.groovy
well)
package com.books; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.id; @entity public class book { private long id; private string title; private string description; private date date; @id @generatedvalue public long getid() { return id; } public void setid(long id) { this.id = id; } public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getdescription() { return description; } public void setdescription(string description) { this.description = description; } }
step 3. registered class hibernate sessionfactory adding relevant entries grails-app/conf/hibernate/hibernate.cfg.xml
file follows:
<!doctype hibernate-configuration system "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping package="com.books" /> <mapping class="com.books.book" /> </session-factory> </hibernate-configuration>
step 4. after starting application (grails run-app
), 'welcome grails' page (grails-app/views/index.gsp
) reports 0 domain classes, means mapping didn't take effect:
- grails run-app
- load localhost:8080
- notice 'domains: 0' under section 'artefacts'
relevant exception in grails 3.0.1
if query above domain class, following exception thrown
caused by: org.hibernate.hql.internal.ast.querysyntaxexception: book not mapped @ org.hibernate.hql.internal.ast.util.sessionfactoryhelper.requireclasspersister(sessionfactoryhelper.java:189) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.ast.tree.fromelementfactory.addfromelement(fromelementfactory.java:109) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] .hibernate.hql.internal.ast.tree.fromclause.addfromelement(fromclause.java:95) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.ast.hqlsqlwalker.createfromelement(hqlsqlwalker.java:332) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromelement(hqlsqlbasewalker.java:3678) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromelementlist(hqlsqlbasewalker.java:3567) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.fromclause(hqlsqlbasewalker.java:708) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.query(hqlsqlbasewalker.java:564) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.selectstatement(hqlsqlbasewalker.java:301) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.antlr.hqlsqlbasewalker.statement(hqlsqlbasewalker.java:249) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.ast.querytranslatorimpl.analyze(querytranslatorimpl.java:278) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] @ org.hibernate.hql.internal.ast.querytranslatorimpl.docompile(querytranslatorimpl.java:206) ~[hibernate-core-4.3.8.final.jar:4.3.8.final] ... 40 common frames omitted
as graeme suggested, solution putting hibernate.cfg.xml
in grails-app/conf
instead of grails-app/conf/hibernate
, otherwise configuration not take effect. have submitted pull request reflect in relevant documentation , hope update take effect prevent other users facing same issue.
Comments
Post a Comment