From: Ciaran J. (JIRA) <nh...@gm...> - 2011-03-10 11:40:29
|
IDGeneratorBinding seems broken when mixing schemas --------------------------------------------------- Key: NH-2569 URL: http://216.121.112.228/browse/NH-2569 Project: NHibernate Issue Type: Bug Components: Core Affects Versions: 3.0.0.GA Reporter: Ciaran Jessup Priority: Minor Attachments: OverWriteSchemaInIdGenerator.patch We seem to have run into an issue when using the NHibernate.Id.TableHiLoGenerator over a table in a db schema different to the schema that the containing table/class belongs to. A mapping similar to: <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace"> <class name="MyAssembly.MyAwesomeRecord, MyAssembly" table="MyAwesomeRecords" schema="Foo"> <id name="Id" column="mar_id" type="Int64" unsaved-value="-1"> <generator class="NHibernate.Id.TableHiLoGenerator"> <param name="table">hilosequences</param> <param name="column">sequence_next_hi_value</param> <param name="where">sequence_name='MyAwesomeRecord'</param> <param name="max_lo">1</param> <param name="schema">Bar</param> </generator> </id> </class> </hibernate-mapping> (Note the two schemas, Foo on the enclosing class, and Bar on he IDGenerator's underlying table) If included in your hibernate mappings will cause hibernate to fail to start with an exception along the lines of : 2011-03-10 11:04:19,777 [9] ERROR NHibernate.Cfg.Configuration [(null)] <(null)> - Could not compile the mapping document: Numero.SmartAgent.Workflow.Maps.WorkItem.hbm.xml NHibernate.MappingException: Could not compile the mapping document: MyAssembly.MyAwesomeRecord.hbm.xml ---> System.ArgumentException: An item with the same key has already been added. at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.GetGeneratorProperties(HbmGenerator generatorMapping, String schema) at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.BindGenerator(SimpleValue id, HbmGenerator generatorMapping) at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) --- End of inner exception stack trace -- I believe this is caused by the IdGeneratorBinder#GetGeneratorProperties preferentially using the schema of the containing table/class and then trying to add the id generator's configured schema to the underlying collection after the table one has already been added. I've supplied a trivial patch that I believe 'fixes' it for me, but it is most likely not the correct fix that someone else would want :) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: Fabio M. (JIRA) <nh...@gm...> - 2011-03-21 15:10:50
|
[ http://216.121.112.228/browse/NH-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=20684#action_20684 ] Fabio Maulo commented on NH-2569: --------------------------------- We would have your "MyAwesomeRecord" (mapping and classes) to create our AwesomeRecordFailingTests. > IDGeneratorBinding seems broken when mixing schemas > --------------------------------------------------- > > Key: NH-2569 > URL: http://216.121.112.228/browse/NH-2569 > Project: NHibernate > Issue Type: Bug > Components: Core > Affects Versions: 3.0.0.GA > Reporter: Ciaran Jessup > Priority: Minor > Attachments: OverWriteSchemaInIdGenerator.patch > > > We seem to have run into an issue when using the NHibernate.Id.TableHiLoGenerator over a table in a db schema different to the schema that the containing table/class belongs to. > A mapping similar to: > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace"> > <class name="MyAssembly.MyAwesomeRecord, MyAssembly" table="MyAwesomeRecords" schema="Foo"> > <id name="Id" column="mar_id" type="Int64" unsaved-value="-1"> > <generator class="NHibernate.Id.TableHiLoGenerator"> > <param name="table">hilosequences</param> > <param name="column">sequence_next_hi_value</param> > <param name="where">sequence_name='MyAwesomeRecord'</param> > <param name="max_lo">1</param> > <param name="schema">Bar</param> > </generator> > </id> > </class> > </hibernate-mapping> > (Note the two schemas, Foo on the enclosing class, and Bar on he IDGenerator's underlying table) > If included in your hibernate mappings will cause hibernate to fail to start with an exception along the lines of : > 2011-03-10 11:04:19,777 [9] ERROR NHibernate.Cfg.Configuration [(null)] <(null)> - Could not compile the mapping document: Numero.SmartAgent.Workflow.Maps.WorkItem.hbm.xml > NHibernate.MappingException: Could not compile the mapping document: MyAssembly.MyAwesomeRecord.hbm.xml ---> System.ArgumentException: An item with the same key has already been added. > at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.GetGeneratorProperties(HbmGenerator generatorMapping, String schema) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.BindGenerator(SimpleValue id, HbmGenerator generatorMapping) > at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) > at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) > at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) > --- End of inner exception stack trace -- > I believe this is caused by the IdGeneratorBinder#GetGeneratorProperties preferentially using the schema of the containing table/class and then trying to add the id generator's configured schema to the underlying collection after the table one has already been added. > I've supplied a trivial patch that I believe 'fixes' it for me, but it is most likely not the correct fix that someone else would want :) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: Ciaran J. (JIRA) <nh...@gm...> - 2011-03-21 15:40:52
|
[ http://216.121.112.228/browse/NH-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=20685#action_20685 ] Ciaran Jessup commented on NH-2569: ----------------------------------- :( I'm sorry those files don't exist , I transcribed it from the real case, which irritatingly I can't give you, is there a document somewhere on how to prepare the test and I"ll happily re-do it for you ? > IDGeneratorBinding seems broken when mixing schemas > --------------------------------------------------- > > Key: NH-2569 > URL: http://216.121.112.228/browse/NH-2569 > Project: NHibernate > Issue Type: Bug > Components: Core > Affects Versions: 3.0.0.GA > Reporter: Ciaran Jessup > Priority: Minor > Attachments: OverWriteSchemaInIdGenerator.patch > > > We seem to have run into an issue when using the NHibernate.Id.TableHiLoGenerator over a table in a db schema different to the schema that the containing table/class belongs to. > A mapping similar to: > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace"> > <class name="MyAssembly.MyAwesomeRecord, MyAssembly" table="MyAwesomeRecords" schema="Foo"> > <id name="Id" column="mar_id" type="Int64" unsaved-value="-1"> > <generator class="NHibernate.Id.TableHiLoGenerator"> > <param name="table">hilosequences</param> > <param name="column">sequence_next_hi_value</param> > <param name="where">sequence_name='MyAwesomeRecord'</param> > <param name="max_lo">1</param> > <param name="schema">Bar</param> > </generator> > </id> > </class> > </hibernate-mapping> > (Note the two schemas, Foo on the enclosing class, and Bar on he IDGenerator's underlying table) > If included in your hibernate mappings will cause hibernate to fail to start with an exception along the lines of : > 2011-03-10 11:04:19,777 [9] ERROR NHibernate.Cfg.Configuration [(null)] <(null)> - Could not compile the mapping document: Numero.SmartAgent.Workflow.Maps.WorkItem.hbm.xml > NHibernate.MappingException: Could not compile the mapping document: MyAssembly.MyAwesomeRecord.hbm.xml ---> System.ArgumentException: An item with the same key has already been added. > at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.GetGeneratorProperties(HbmGenerator generatorMapping, String schema) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.BindGenerator(SimpleValue id, HbmGenerator generatorMapping) > at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) > at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) > at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) > --- End of inner exception stack trace -- > I believe this is caused by the IdGeneratorBinder#GetGeneratorProperties preferentially using the schema of the containing table/class and then trying to add the id generator's configured schema to the underlying collection after the table one has already been added. > I've supplied a trivial patch that I believe 'fixes' it for me, but it is most likely not the correct fix that someone else would want :) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
From: Fabio M. (JIRA) <nh...@gm...> - 2011-03-21 20:13:52
|
[ http://216.121.112.228/browse/NH-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=20688#action_20688 ] Fabio Maulo commented on NH-2569: --------------------------------- Have a look to the top-left corner of this site; there is the "Welcome" message with the link you are looking for. Thanks. > IDGeneratorBinding seems broken when mixing schemas > --------------------------------------------------- > > Key: NH-2569 > URL: http://216.121.112.228/browse/NH-2569 > Project: NHibernate > Issue Type: Bug > Components: Core > Affects Versions: 3.0.0.GA > Reporter: Ciaran Jessup > Priority: Minor > Attachments: OverWriteSchemaInIdGenerator.patch > > > We seem to have run into an issue when using the NHibernate.Id.TableHiLoGenerator over a table in a db schema different to the schema that the containing table/class belongs to. > A mapping similar to: > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace"> > <class name="MyAssembly.MyAwesomeRecord, MyAssembly" table="MyAwesomeRecords" schema="Foo"> > <id name="Id" column="mar_id" type="Int64" unsaved-value="-1"> > <generator class="NHibernate.Id.TableHiLoGenerator"> > <param name="table">hilosequences</param> > <param name="column">sequence_next_hi_value</param> > <param name="where">sequence_name='MyAwesomeRecord'</param> > <param name="max_lo">1</param> > <param name="schema">Bar</param> > </generator> > </id> > </class> > </hibernate-mapping> > (Note the two schemas, Foo on the enclosing class, and Bar on he IDGenerator's underlying table) > If included in your hibernate mappings will cause hibernate to fail to start with an exception along the lines of : > 2011-03-10 11:04:19,777 [9] ERROR NHibernate.Cfg.Configuration [(null)] <(null)> - Could not compile the mapping document: Numero.SmartAgent.Workflow.Maps.WorkItem.hbm.xml > NHibernate.MappingException: Could not compile the mapping document: MyAssembly.MyAwesomeRecord.hbm.xml ---> System.ArgumentException: An item with the same key has already been added. > at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.GetGeneratorProperties(HbmGenerator generatorMapping, String schema) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.BindGenerator(SimpleValue id, HbmGenerator generatorMapping) > at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) > at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) > at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) > --- End of inner exception stack trace -- > I believe this is caused by the IdGeneratorBinder#GetGeneratorProperties preferentially using the schema of the containing table/class and then trying to add the id generator's configured schema to the underlying collection after the table one has already been added. > I've supplied a trivial patch that I believe 'fixes' it for me, but it is most likely not the correct fix that someone else would want :) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |
[nhibernate-issues] [NHJIRA] Resolved: (NH-2569) IDGeneratorBinding
seems broken when mixing schemas
From: Fabio M. (JIRA) <nh...@gm...> - 2011-04-24 14:19:43
|
[ http://216.121.112.228/browse/NH-2569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Fabio Maulo resolved NH-2569. ----------------------------- Resolution: Fixed Fix Version/s: 3.2.0Alpha3 > IDGeneratorBinding seems broken when mixing schemas > --------------------------------------------------- > > Key: NH-2569 > URL: http://216.121.112.228/browse/NH-2569 > Project: NHibernate > Issue Type: Bug > Components: Core > Affects Versions: 3.0.0.GA > Reporter: Ciaran Jessup > Priority: Minor > Fix For: 3.2.0Alpha3 > > Attachments: OverWriteSchemaInIdGenerator.patch > > > We seem to have run into an issue when using the NHibernate.Id.TableHiLoGenerator over a table in a db schema different to the schema that the containing table/class belongs to. > A mapping similar to: > <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace"> > <class name="MyAssembly.MyAwesomeRecord, MyAssembly" table="MyAwesomeRecords" schema="Foo"> > <id name="Id" column="mar_id" type="Int64" unsaved-value="-1"> > <generator class="NHibernate.Id.TableHiLoGenerator"> > <param name="table">hilosequences</param> > <param name="column">sequence_next_hi_value</param> > <param name="where">sequence_name='MyAwesomeRecord'</param> > <param name="max_lo">1</param> > <param name="schema">Bar</param> > </generator> > </id> > </class> > </hibernate-mapping> > (Note the two schemas, Foo on the enclosing class, and Bar on he IDGenerator's underlying table) > If included in your hibernate mappings will cause hibernate to fail to start with an exception along the lines of : > 2011-03-10 11:04:19,777 [9] ERROR NHibernate.Cfg.Configuration [(null)] <(null)> - Could not compile the mapping document: Numero.SmartAgent.Workflow.Maps.WorkItem.hbm.xml > NHibernate.MappingException: Could not compile the mapping document: MyAssembly.MyAwesomeRecord.hbm.xml ---> System.ArgumentException: An item with the same key has already been added. > at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.GetGeneratorProperties(HbmGenerator generatorMapping, String schema) > at NHibernate.Cfg.XmlHbmBinding.IdGeneratorBinder.BindGenerator(SimpleValue id, HbmGenerator generatorMapping) > at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, PersistentClass rootClass, Table table) > at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass classSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema, IDictionary`2 inheritedMetas) > at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping mappingSchema) > at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) > --- End of inner exception stack trace -- > I believe this is caused by the IdGeneratorBinder#GetGeneratorProperties preferentially using the schema of the containing table/class and then trying to add the id generator's configured schema to the underlying collection after the table one has already been added. > I've supplied a trivial patch that I believe 'fixes' it for me, but it is most likely not the correct fix that someone else would want :) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |