[Hibernate-JIRA] Commented: (HHH-796) Hibernate fails to determine identifier of association inside composite-element in EntityMode.DOM4J when declared with embed-xml="false"
by manav chauhan (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-796?page=co... ]
manav chauhan commented on HHH-796:
-----------------------------------
Still an issue in 3.2.5.
> Hibernate fails to determine identifier of association inside composite-element in EntityMode.DOM4J when declared with embed-xml="false"
> ----------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HHH-796
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-796
> Project: Hibernate3
> Issue Type: Bug
> Affects Versions: 3.0.5
> Environment: Hibernate 3.0.5; Windows; MySQL 4.1
> Reporter: Vladimir Demochko
> Fix For: entity-modes
>
> Attachments: TestBug.zip
>
>
> Having the following mapping declaration:
> <class name="Parent">
> <id name="id"/>
> <property name="label"/>
> <bag name="associations" table="ASSOCIATION" cascade="all">
> <key column="PARENT_ID"/>
> <composite-element class="Association" node="associations">
> <parent name="parent"/>
> <many-to-one name="child" class="Child" column="CHILD_ID" node="child" embed-xml="false"/>
> <property name="info" column="INFO" type="string"/>
> </composite-element>
> </bag>
> </class>
> <class name="Child">
> <id name="id"/>
> <property name="info"/>
> </class>
> Hibernate fails with NullPointerException while constructing Parent/assosiations/child element (in fact while getting an identifier of a Child object) in EntityMode.DOM4J:
> java.lang.NullPointerException
> at org.hibernate.type.EntityType.getIdentifierType(EntityType.java:227)
> at org.hibernate.type.EntityType.setToXMLNode(EntityType.java:417)
> at org.hibernate.property.Dom4jAccessor$ElementSetter.set(Dom4jAccessor.java:307)
> at org.hibernate.tuple.AbstractComponentTuplizer.setPropertyValues(AbstractComponentTuplizer.java:80)
> at org.hibernate.type.ComponentType.setPropertyValues(ComponentType.java:262)
> at org.hibernate.type.ComponentType.resolve(ComponentType.java:446)
> at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:182)
> at org.hibernate.persister.collection.AbstractCollectionPersister.readElement(AbstractCollectionPersister.java:612)
> at org.hibernate.collection.PersistentElementHolder.readFrom(PersistentElementHolder.java:97)
> at org.hibernate.loader.Loader.readCollectionElement(Loader.java:645)
> at org.hibernate.loader.Loader.readCollectionElements(Loader.java:355)
> at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:306)
> at org.hibernate.loader.Loader.doQuery(Loader.java:395)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:210)
> at org.hibernate.loader.Loader.loadCollection(Loader.java:1401)
> at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:107)
> at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:483)
> at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
> at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1422)
> at org.hibernate.type.CollectionType.getCollection(CollectionType.java:474)
> at org.hibernate.type.CollectionType.resolveKey(CollectionType.java:332)
> at org.hibernate.type.CollectionType.resolve(CollectionType.java:326)
> at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:105)
> at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:510)
> at org.hibernate.loader.Loader.doQuery(Loader.java:419)
> at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:210)
> at org.hibernate.loader.Loader.loadEntity(Loader.java:1312)
> at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
> at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
> at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2461)
> at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:350)
> at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:331)
> at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
> at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:151)
> at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:79)
> at org.hibernate.impl.SessionImpl.get(SessionImpl.java:617)
> at org.hibernate.impl.SessionImpl.get(SessionImpl.java:610)
> at TestBug.main(TestBug.java:21)
--
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
18 years, 4 months
[Hibernate-JIRA] Updated: (HBX-446) one-to-many relation with not-null attribute on key element
by Max Rydahl Andersen (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/HBX-446?page=co... ]
Max Rydahl Andersen updated HBX-446:
------------------------------------
Fix Version/s: (was: 3.2.0.GA)
3.2.1
slip
> 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.1
>
>
> 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
18 years, 4 months