Grails GORM Domain作成・データ登録・確認
1.Domain作成
>grails create-domain-class jp.gr.java_conf.tezu.grails.ec.Member | Loading Grails 2.1.1 | Configuring classpath. | Environment set to development..... | Created file grails-app/domain/jp/gr/java_conf/tezu/grails/ec/Member.groovy | Created file test/unit/jp/gr/java_conf/tezu/grails/ec/MemberTests.groovy
2.Domainに属性を追加
dateCreatedとlastUpdatedはGrailsが登録・更新時に自動でタイムスタンプをセットする属性。詳細は 6 Object Relational Mapping (GORM) 2.2.0のAutomatic timestampingに書いてある
package jp.gr.java_conf.tezu.grails.ec import groovy.transform.EqualsAndHashCode import groovy.transform.ToString import groovy.transform.TupleConstructor @ToString //@EqualsAndHashCode //@TupleConstructor class Member { Date dateCreated // automatically set date/time when created Date lastUpdated // automatically set date/time when last updated String mail String firstName String lastName String password int sex; String tel String zip String prefectures String address1 String address2 String memo static constraints = { mail nullable:false,blank:false,unique:true firstName nullable:false,blank:false lastName nullable:false,blank:false password nullable:false,blank:false sex nullable:false tel nullable:false,blank:false zip nullable:false,blank:false prefectures nullable:false,blank:false address1 nullable:false,blank:false address2 nullable:true memo nullable:true } }
@EqualsAndHashCodeと@TupleConstructorをコメントアウトしたのは、以下のエラーが発生したため
原因不明、、、
| Loading Grails 2.1.1 | Configuring classpath. | Environment set to development..... | Packaging Grails application.... | Running Grails application grails-ec-admin load MockPersistenceContextInterceptor | Error 2013-01-31 15:07:09,450 [localhost-startStop-1] ERROR pojo.BasicLazyInitializer - Javassist Enhancement failed: jp.gr.java_conf.tezu.grails.ec.Member Message: duplicate method: <init> in jp.gr.java_conf.tezu.grails.ec.Member_$$_javassist_0 Line | Method ->> 514 | createClass3 in javassist.util.proxy.ProxyFactory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 491 | createClass2 in '' | 427 | createClass1 in '' | 399 | createClass in '' | 334 | innerRun . . in java.util.concurrent.FutureTask$Sync | 166 | run in java.util.concurrent.FutureTask | 1110 | runWorker . in java.util.concurrent.ThreadPoolExecutor | 603 | run in java.util.concurrent.ThreadPoolExecutor$Worker ^ 722 | run . . . . in java.lang.Thread
3. 起動時に呼び出されるBootStrap.groovyでデータを登録
import jp.gr.java_conf.tezu.grails.ec.Member class BootStrap { def init = { servletContext -> if (Member.count() != 0) { Member.getAll().each { entity -> entity.delete() } } def entity = new Member(mail:"xxxxx@gmail.com",firstName:"Taro",lastName:"Grails",password:"password",sex:1,tel:"0611112222",zip:"1008924",prefectures:"東京都",address1:"千代田区永田町1-10-1") if (!entity.save(flush:true)) { entity.errors.each { println it } } } def destroy = { } }
4.確認用にGrails Plugin: Console PluginをInstall。起動後にConsoleControllerを選択
jp.gr.java_conf.tezu.grails.ec.Member.list()
を入力して実行、右側にBootStrap.groovyで登録したデータを表示