Middlegen
昨日のMiddlegenで吐き出された*.hbm.xmlに不具合があった。
テーブル名の終わりに「s」がついてると、「s」をのけた状態で作られるみたい。
原因を突き詰めたところ、middlegen Taskのオプションで
singularize="false"
というのを入れておけばいいみたい。
- 今回作成したbuild.xml
<?xml version="1.0"?> <project name="middlegen" default="default" basedir="."> <property file="build.properties" /> <description> Middlegen </description> <property name="hbm.output" value="${basedir}/WEB-INF/src" /> <property name="appname" value="アプリ名" /> <path id="lib.path"> <fileset dir="${basedir}/WEB-INF/lib"> <include name="*.jar" /> </fileset> </path> <taskdef name="middlegen" classname="middlegen.MiddlegenTask" classpathref="lib.path" /> <taskdef name="hbm2java" classname="net.sf.hibernate.tool.hbm2java.Hbm2JavaTask" classpathref="lib.path" /> <target name="default"> <echo message="usage:" /> <echo message="ant middlegen :テーブルからマッピングファイルを作成します" /> <echo message="ant hbm2java :マッピングファイルからJavaBeanを作成します" /> </target> <target name="middlegen" description="Middlegen Task"> <middlegen appname="${appname}" prefsdir="${basedir}" gui="no" databaseurl="${db.url}" driver="${db.driver}" username="${db.username}" password="${db.password}" singularize="false"> <!-- 出力するテーブルを書く --> <table name="テーブル名" /> <hibernate destination="${hbm.output}" package="パッケージ名" equalsHashcode="true" dynamicUpdate="true" dynamicInsert="true" javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper" /> </middlegen> <!-- Middlegenの設定ファイルを毎回削除する --> <delete file="${basedir}/${appname}-prefs.properties" /> </target> <target name="hbm2java" description="hbm2java Task" depends="middlegen"> <hbm2java output="${hbm.output}"> <fileset dir="${hbm.output}"> <include name="**/*.hbm.xml" /> </fileset> </hbm2java> </target> </project>
- build.properties
db.driver=ドライバ名 db.url=DBのurl db.username=DB接続のユーザー名 db.password=DB接続のパスワード
Middlegenの設定ファイルを消しているのは、singularize="false"とか入れたりはずしたりしてたら、前の状態を保存しているようでそのために上手くコードに反映されなかったりしたので消すようにしました。
sequenceを判別してくれないのはどうにかしたいなぁ。
いちいち手動で書き直すのは面倒だ。