[
http://opensource.atlassian.com/projects/hibernate/browse/HBX-446?page=co...
]
Max Rydahl Andersen updated HBX-446:
------------------------------------
Fix Version/s: (was: 3.2.1)
3.2.2
one-to-many relation with not-null attribute on key element
-----------------------------------------------------------
Key: HBX-446
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HBX-446
Project: Hibernate Tools
Issue Type: Bug
Components: hbm2java
Environment: 3.x
Reporter: Sreeram Katta
Priority: Critical
Fix For: 3.2.2
one-to-many relation with not-null attribute on key element is throwing below error when
I run the hbm2java tool. I have a base class with a joined-subclass and the joined
subclass has one-to-many relationship with another class. The one-to-many uses a list.
When I specify not-null attribute on the key element in the relationship I get the below
error. If I remove it I don't get this error. If I let the key stay not-null, during
run time persistence fails. So I had to revert the mapping file at runtime for the
persistence to go fine. It is only the tool that is misbehaving.
----------------> Error
org.hibernate.tool.hbm2x.ExporterException: Error while processing t
emplate pojo/javaclass.vm
at org.apache.tools.ant.Task.perform(Task.java:373)
at org.apache.tools.ant.Target.execute(Target.java:341)
at org.apache.tools.ant.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Caused by: org.hibernate.tool.hbm2x.ExporterException: Error while processing template
pojo/javaclass.vm
at org.hibernate.tool.hbm2x.TemplateHelper.processTemplate(TemplateHelper.java:89)
at org.hibernate.tool.hbm2x.POJOExporter.runVelocity(POJOExporter.java:78)
at org.hibernate.tool.hbm2x.POJOExporter.exportPersistentClass(POJOExporter.java:61)
at org.hibernate.tool.hbm2x.POJOExporter.start(POJOExporter.java:111)
at org.hibernate.tool.ant.GeneratorTask.execute(GeneratorTask.java:33)
at org.hibernate.tool.ant.HibernateToolTask.execute(HibernateToolTask.java:115)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
at org.apache.tools.ant.Task.perform(Task.java:364)
-----------------
mapping files
-----------> Base class
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="test.resources.core">
<class
name="Resource"
table="Resource" polymorphism="explicit"
>
<id
name="Id"
type="integer"
column="resourceId"
>
<meta attribute="use-in-equals">true</meta>
<generator class="hilo">
<param name="table">ResourceIdTracker</param>
<param name="column">resourceId</param>
</generator>
</id>
<property
name="ResourceName"
column="resourceName"
type="string"
not-null="true"
length="80"
/>
<property
name="ResourceDescription"
column="resourceDescription"
type="string"
not-null="true"
length="255"
/>
<property
name="ResourceTypeId"
column="resourceTypeId"
type="integer"
not-null="true"
length="10"
/>
<property
name="CreatedBy"
column="createdBy"
type="integer"
not-null="true"
length="10"
/>
<property
name="CreatedTime"
column="createdTime"
type="timestamp"
not-null="true"
length="23"
/>
<property
name="LastUpdatedBy"
column="lastUpdatedBy"
type="integer"
not-null="true"
length="10"
/>
<property
name="LastUpdatedTime"
column="lastUpdatedTime"
type="timestamp"
not-null="true"
length="23"
/>
<property
name="Deleted"
column="deleted"
type="string"
not-null="true"
length="1"
/>
<set name="ResourcePermissions" table="ResourcePermission"
inverse="true">
<key column="resourceId" not-null="true"/>
<one-to-many class="ResourcePermission"/>
</set>
</class>
</hibernate-mapping>
--------------------> JOINED SUBCLASS
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="test.resources.chartbook">
<joined-subclass
name="ChartDefinition"
table="ChartDefinition"
extends="test.resources.core.Resource"
>
<key column="chartDefinitionId"/>
<property
name="FromDate"
column="fromDate"
type="integer"
not-null="false"
length="10"
/>
<property
name="ToDate"
column="toDate"
type="integer"
not-null="false"
length="10"
/>
<property
name="Period"
column="period"
type="string"
not-null="false"
length="32"
/>
<property
name="ViewType"
column="viewType"
type="string"
not-null="false"
length="32"
/>
<!-- This works but requires bidrecitional setting -->
<one-to-one name="chartAxisDefinition" cascade="all-delete-orphan"
class="ChartAxisDefinition"/>
<!-- having a not-null attribute on key is thowing error while generating classes
where as -->
<!-- not having it is throwing an error while inserting -->
<!-- for now removing while code generation and adding it back while run time -->
<!-- NEED TO ADDRESS THIS -->
<list name="ChartSeries" cascade="all-delete-orphan"
inverse="false" lazy="false">
<key column="chartDefinitionId" not-null="true"/>
<list-index column="position" />
<one-to-many class="ChartSeries"/>
</list>
</joined-subclass>
</hibernate-mapping>
--------------> ONE TO MANY TARGET
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="test.resources.chartbook">
<class
name="ChartSeries"
table="ChartSeries"
>
<id
name="Id"
type="integer"
column="chartSeriesId"
>
<generator class="hilo">
<param name="table">ResourceIdTracker</param>
<param name="column">resourceId</param>
</generator>
</id>
<property
name="Included"
column="included"
type="string"
not-null="true"
length="1"
/>
<property
name="SelectorTreeNodePath"
column="selectorTreeNodePath"
type="string"
not-null="false"
length="1024"
/>
<property
name="Attribute"
column="attribute"
type="string"
not-null="false"
length="50"
/>
<property
name="ColumnName"
column="columnName"
type="string"
not-null="false"
length="255"
/>
<property
name="Formula"
column="formula"
type="string"
not-null="false"
/>
<property
name="AxisLocation"
column="axisLocation"
type="string"
not-null="true"
length="32"
/>
<property
name="Position"
column="position"
type="integer"
not-null="true"
length="10"
insert="false"
update="false"
/>
</class>
</hibernate-mapping>
-------------- ONE TO ONE TARGET
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="test.resources.chartbook">
<class
name="ChartAxisDefinition"
table="ChartAxisDefinition"
>
<id
name="Id"
type="integer"
column="chartAxisDefinitionId"
>
<generator class="foreign">
<param name="property">ChartDefinition</param>
</generator>
</id>
<property
name="LeftAxisMin"
column="leftAxisMin"
type="java.lang.Double"
not-null="true"
length="15"
/>
<property
name="LeftAxisMax"
column="leftAxisMax"
type="java.lang.Double"
not-null="true"
length="15"
/>
<property
name="RightAxisMin"
column="rightAxisMin"
type="java.lang.Double"
not-null="true"
length="15"
/>
<property
name="RightAxisMax"
column="rightAxisMax"
type="java.lang.Double"
not-null="true"
length="15"
/>
<property
name="LeftAxisLabel"
column="leftAxisLabel"
type="string"
not-null="true"
length="32"
/>
<property
name="RightAxisLabel"
column="rightAxisLabel"
type="string"
not-null="true"
length="32"
/>
<property
name="ChartName"
column="chartName"
type="string"
not-null="true"
length="80"
/>
<one-to-one name="ChartDefinition" class="ChartDefinition"
constrained="true"/>
</class>
</hibernate-mapping>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira