[hibernate-issues] [Hibernate-JIRA] Updated: (HBX-446) one-to-many relation with not-null attribute on key element

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Thu Oct 4 11:25:27 EDT 2007


     [ http://opensource.atlassian.com/projects/hibernate/browse/HBX-446?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Max Rydahl Andersen updated HBX-446:
------------------------------------

    Fix Version/s:     (was: 3.2.beta11)
                   3.2.beta12

> 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.beta12
>
>
> 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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list