Hi I am using Hibernate Tools 3.2.0 Beta 6a and Hibernate 3.1.3 to try and generate the DAO's and POJO's for my project. I am running this from an ant task using java 1.4.2.12 and the database is Oracle 9i. I am able to generate these fine for any table that does not have a composite key. Any table that has a composite key generates the hbm but gives a stacktrace.
The stacktrace is:
An exception occurred while running exporter #2:generic exporter
To get the full stack trace run ant with -verbose
org.hibernate.tool.hbm2x.ExporterException: Error while processing template hibernate-mapping.hbm.ftl
freemarker.template.TemplateModelException: No signature of method getTag matches (org.hibernate.mapping.Component)
C:\projects\hibernate\hib3\build.xml:117: org.hibernate.tool.hbm2x.ExporterException: Error while processing template hibernate-mapping.hbm.ftl
I have seen from several post ideas to add entries to the DAO.ftl with no success. Does anyone have a solution to generating against a table with composite keys?
Any help would be greatly appreaciated.
John
Here is the ant task that I am running:
[code]<target name="hibtools" depends="init">
<echo message="generating the hbms"/>
<hibernatetool destdir="${build.gensrc.dir}">
<jdbcconfiguration configurationfile="${resources.dir}\Hibernate.Config.hbm.xml"
packagename="persistence"
revengfile="${resources.dir}\Hibernate-RevEng.xml">
</jdbcconfiguration>
<hbmtemplate
templatepath="${resources.dir}\ftl"
template="hibernate-mapping.hbm.ftl"
filepattern="{package-name}/{class-name}.hbm.xml">
<property key="jdk5" value="false"/>
<property key="ejb3" value="false"/>
<property key="default-cascade" value="all"/>
<property key="verbose" value="true"/>
</hbmtemplate>
</hibernatetool>
<echo message="hbms generated"/>
<hibernatetool destdir="${build.gensrc.dir}">
<configuration>
<fileset dir="${build.gensrc.dir}">
<include name="**/*.hbm.xml"/>
</fileset>
</configuration>
<hbmtemplate
templatepath="${resources.dir}\ftl"
template="Pojo.ftl"
filepattern="{package-name}/{class-name}.java">
<property key="jdk5" value="false"/>
<property key="ejb3" value="false"/>
</hbmtemplate>
<hbmtemplate
templatepath="${resources.dir}\ftl"
template="DAO.ftl"
filepattern="{package-name}/{class-name}DAO.java">
<property key="jdk5" value="false"/>
<property key="ejb3" value="false"/>
<property key="sessionFactoryName" value="java:/hibernate/SessionFactory"/>
</hbmtemplate>
</hibernatetool>[/code]
Here is a script to create the table in question:
[code]CREATE TABLE INVENTORY_FULFILLMENT_METHOD
(
ITEM_ID CHAR(20) NOT NULL,
FULFILLMENT_METHOD_CODE VARCHAR2(2) NOT NULL,
IS_DEFAULT VARCHAR2(1) DEFAULT 'N',
CREATED_BY VARCHAR2(80),
CREATED_ON DATE,
UPDATED_BY VARCHAR2(80),
UPDATED_ON DATE
)
TABLESPACE WIMS_DATA
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 10M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
LOGGING
NOCACHE
NOPARALLEL;
CREATE UNIQUE INDEX INV_FULF_METHOD_PK ON INVENTORY_FULFILLMENT_METHOD
(ITEM_ID, FULFILLMENT_METHOD_CODE)
LOGGING
TABLESPACE WIMS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 10M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
CREATE PUBLIC SYNONYM INVENTORY_FULFILLMENT_METHOD FOR INVENTORY_FULFILLMENT_METHOD;
ALTER TABLE INVENTORY_FULFILLMENT_METHOD ADD (
CONSTRAINT INV_FULF_METHOD_PK PRIMARY KEY (ITEM_ID, FULFILLMENT_METHOD_CODE)
USING INDEX
TABLESPACE WIMS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 10M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
));
ALTER TABLE INVENTORY_FULFILLMENT_METHOD ADD (
CONSTRAINT INV_FULF_FULFILLMENT_FK FOREIGN KEY (FULFILLMENT_METHOD_CODE)
REFERENCES FULFILLMENT_METHOD (CODE));
ALTER TABLE INVENTORY_FULFILLMENT_METHOD ADD (
CONSTRAINT INV_FULF_INV_FK FOREIGN KEY (ITEM_ID)
REFERENCES INVENTORY (OBJECT_ID));
[/code]
|