I have a parent Style that has a one to many with StyleItem. When I
save a new style, The StyleId isn't feeding onto the StyleItem when
the StyleItem is inserted, resulting in a foreign key constraint
error).
I did one virtually the same yesterday on a different entity and it
worked. Here are my mappings.
Thanks for everyone's patience.
jeff
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Crestron.Tools.Core.Entities.Style,
Crestron.Tools.Core" table="Style">
<id name="Id" column="Id" type="String" unsaved-value="" length
="16"
access="field.camelcase-underscore">
<generator class="Crestron.Tools.Core.Data.IdGenerator,
Crestron.Tools.Core"/>
</id>
<property name="Name" type="String" length="60" unique="true"/>
<bag name="Items" lazy="false" access="field.camelcase-underscore"
cascade="save-update">
<key column="StyleId"/>
<one-to-many class="Crestron.Tools.Core.Entities.StyleItem,
Crestron.Tools.Core"/>
</bag>
</class>
</hibernate-mapping>
And the StyleItem
hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Crestron.Tools.Core.Entities.StyleItem,
Crestron.Tools.Core" table="StyleItem">
<id name="Id" column="Id" type="String" unsaved-value="" length
="16"
access="field.camelcase-underscore">
<generator class="Crestron.Tools.Core.Data.IdGenerator,
Crestron.Tools.Core"/>
</id>
<property name="StyleId" type="String" length="16"
access="field.camelcase-underscore"/>
<property name="ElementType" length="20"
type="Crestron.Tools.Core.ElementTypeEnumMapper,
Crestron.Tools.Core"/>
<property name="ElementName" type="String" length="40"/>
<property name="PropertyFullName" type="String" length="40"/>
<property name="ValueAsString" type="String" length="100"/>
</class>
</hibernate-mapping>
And the log
NHibernate.Persister.Entity.AbstractEntityPersister: DEBUG - Inserting
entity: [Crestron.Tools.Core.Entities.Style#662e6cb0c0bd6670]
NHibernate.AdoNet.AbstractBatcher: DEBUG - Opened new IDbCommand, open
IDbCommands: 1
NHibernate.AdoNet.AbstractBatcher: DEBUG - Building an IDbCommand
object for the SqlString: INSERT INTO Style (Name, Id) VALUES (?, ?)
NHibernate.Persister.Entity.AbstractEntityPersister: DEBUG -
Dehydrating entity:
[Crestron.Tools.Core.Entities.Style#662e6cb0c0bd6670]
NHibernate.Type.StringType: DEBUG - binding
'RedActiveBlueInActiveButtonFaceTest' to parameter: 0
NHibernate.Type.StringType: DEBUG - binding '662e6cb0c0bd6670' to
parameter: 1
NHibernate.Connection.DriverConnectionProvider: DEBUG - Obtaining
IDbConnection from Driver
NHibernate.Persister.Entity.AbstractEntityPersister: DEBUG - Inserting
entity: [Crestron.Tools.Core.Entities.StyleItem#e8b5a1a1aa9ca1ba]
NHibernate.AdoNet.AbstractBatcher: DEBUG - Closed IDbCommand, open
IDbCommands: 0
NHibernate.AdoNet.ConnectionManager: DEBUG - skipping aggressive-
release due to flush cycle
NHibernate.AdoNet.AbstractBatcher: DEBUG - Opened new IDbCommand, open
IDbCommands: 1
NHibernate.AdoNet.AbstractBatcher: DEBUG - Building an IDbCommand
object for the SqlString: INSERT INTO StyleItem (StyleId, ElementType,
ElementName, PropertyFullName, ValueAsString, Id) VALUES
(?, ?, ?, ?, ?, ?)
NHibernate.Persister.Entity.AbstractEntityPersister: DEBUG -
Dehydrating entity:
[Crestron.Tools.Core.Entities.StyleItem#e8b5a1a1aa9ca1ba]
NHibernate.Type.StringType: DEBUG - binding '' to parameter: 0
Crestron.Tools.Core.ElementTypeEnumMapper: DEBUG - binding
'DisplayElement' to parameter: 1
NHibernate.Type.StringType: DEBUG - binding 'Button' to parameter: 2
NHibernate.Type.StringType: DEBUG - binding 'FaceColor.Active.0' to
parameter: 3
NHibernate.Type.StringType: DEBUG - binding '#FFFF0000' to parameter:
4
NHibernate.Type.StringType: DEBUG - binding 'e8b5a1a1aa9ca1ba' to
parameter: 5
NHibernate.AdoNet.AbstractBatcher: DEBUG - Closed IDbCommand, open
IDbCommands: 0
NHibernate.AdoNet.ConnectionManager: DEBUG - skipping aggressive-
release due to flush cycle
NHibernate.Util.ADOExceptionReporter: DEBUG - could not insert:
[Crestron.Tools.Core.Entities.StyleItem]
[ INSERT INTO StyleItem (StyleId, ElementType, ElementName,
PropertyFullName, ValueAsString, Id) VALUES (?, ?, ?, ?, ?, ?) ]
System.Data.SqlClient.SqlException: The INSERT statement conflicted
with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The conflict
occurred in database "ScratchDeviceLibrary", table "dbo.Style", column
'Id'.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning
(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler, SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader
(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery
(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand
cmd)
at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation
expectation)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert
(Object id, Object[] fields, Boolean[] notNull, Int32 j,
SqlCommandInfo sql, Object obj, ISessionImplementor session)
NHibernate.Util.ADOExceptionReporter: WARN -
System.Data.SqlClient.SqlException: The INSERT statement conflicted
with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The conflict
occurred in database "ScratchDeviceLibrary", table "dbo.Style", column
'Id'.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning
(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler, SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader
(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery
(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand
cmd)
at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation
expectation)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert
(Object id, Object[] fields, Boolean[] notNull, Int32 j,
SqlCommandInfo sql, Object obj, ISessionImplementor session)
NHibernate.Util.ADOExceptionReporter: ERROR - The INSERT statement
conflicted with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The
conflict occurred in database "ScratchDeviceLibrary", table
"dbo.Style", column 'Id'.
The statement has been terminated.
NHibernate.Event.Default.AbstractFlushingEventListener: ERROR - Could
not synchronize database state with session
NHibernate.Exceptions.GenericADOException: could not insert:
[Crestron.Tools.Core.Entities.StyleItem][SQL: INSERT INTO StyleItem
(StyleId, ElementType, ElementName, PropertyFullName, ValueAsString,
Id) VALUES (?, ?, ?, ?, ?, ?)] --->
System.Data.SqlClient.SqlException: The INSERT statement conflicted
with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The conflict
occurred in database "ScratchDeviceLibrary", table "dbo.Style", column
'Id'.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning
(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler, SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader
(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery
(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand
cmd)
at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation
expectation)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert
(Object id, Object[] fields, Boolean[] notNull, Int32 j,
SqlCommandInfo sql, Object obj, ISessionImplementor session)
--- End of inner exception stack trace ---
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert
(Object id, Object[] fields, Boolean[] notNull, Int32 j,
SqlCommandInfo sql, Object obj, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert
(Object id, Object[] fields, Object obj, ISessionImplementor session)
at NHibernate.Action.EntityInsertAction.Execute()
at NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
at NHibernate.Engine.ActionQueue.ExecuteActions(IList list)
at NHibernate.Engine.ActionQueue.ExecuteActions()
at
NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions
(IEventSource session)
NHibernate.AdoNet.ConnectionManager: DEBUG - registering flush end
NHibernate.AdoNet.ConnectionManager: DEBUG - aggressively releasing
database connection
NHibernate.Connection.ConnectionProvider: DEBUG - Closing connection
NHibernate.Impl.SessionImpl: DEBUG - closing session
NHibernate.AdoNet.AbstractBatcher: DEBUG - running BatcherImpl.Dispose
(true)
TestCase
'Crestron.Tools.Core.UnitTests.SchemaHelper.Reload_Schema_And_Add_TestData'
failed: Spring.Data.UncategorizedAdoException : Hibernate operation:
could not insert: [Crestron.Tools.Core.Entities.StyleItem][SQL: INSERT
INTO StyleItem (StyleId, ElementType, ElementName, PropertyFullName,
ValueAsString, Id) VALUES (?, ?, ?, ?, ?, ?)]; uncategorized
DataException for SQL [INSERT INTO StyleItem (StyleId, ElementType,
ElementName, PropertyFullName, ValueAsString, Id) VALUES
(?, ?, ?, ?, ?, ?)]; ErrorCode [<no error code>]; The INSERT statement
conflicted with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The
conflict occurred in database "ScratchDeviceLibrary", table
"dbo.Style", column 'Id'.
The statement has been terminated.
----> System.Data.SqlClient.SqlException : The INSERT statement
conflicted with the FOREIGN KEY constraint "FK3AD682F0EC6150A3". The
conflict occurred in database "ScratchDeviceLibrary", table
"dbo.Style", column 'Id'.
The statement has been terminated.
l:\projects\spring-net\trunk\src\Spring\Spring.Data\Data\Support
\FallbackExceptionTranslator.cs(67,0): at
Spring.Data.Support.FallbackExceptionTranslator.Translate(String task,
String sql, Exception exception)
l:\projects\spring-net\trunk\src\Spring\Spring.Data\Data\Support
\ErrorCodeExceptionTranslator.cs(227,0): at
Spring.Data.Support.ErrorCodeExceptionTranslator.Translate(String
task, String sql, Exception exception)
l:\projects\spring-net\trunk\src\Spring\Spring.Data.NHibernate12\Data
\NHibernate\HibernateAccessor.cs(453,0): at
Spring.Data.NHibernate.HibernateAccessor.ConvertAdoAccessException
(ADOException ex)
l:\projects\spring-net\trunk\src\Spring\Spring.Data.NHibernate\Data
\NHibernate\HibernateTemplate.cs(921,0): at
Spring.Data.NHibernate.HibernateTemplate.Execute(IHibernateCallback
action, Boolean exposeNativeSession)
l:\projects\spring-net\trunk\src\Spring\Spring.Data.NHibernate\Data
\NHibernate\HibernateTemplate.cs(650,0): at
Spring.Data.NHibernate.HibernateTemplate.SaveOrUpdate(Object entity)
l:\projects\spring-net\trunk\src\Spring\Spring.Data.NHibernate12\Data
\NHibernate\Generic\HibernateTemplate.cs(586,0): at
Spring.Data.NHibernate.Generic.HibernateTemplate.SaveOrUpdate(Object
entity)
C:\Source\Fusion\Trunk\Core\Core\Data\CoreDLMaintDao.cs(30,0): at
Crestron.Tools.Core.Data.CoreDLMaintDao.Save(Style style)
C:\Source\Fusion\Trunk\Core\Core.UnitTests\SchemaHelper.cs(72,0): at
Crestron.Tools.Core.UnitTests.SchemaHelper.addStyleTestData()
C:\Source\Fusion\Trunk\Core\Core.UnitTests\SchemaHelper.cs(46,0): at
Crestron.Tools.Core.UnitTests.SchemaHelper.Reload_Schema_And_Add_TestData
()
--SqlException
at System.Data.SqlClient.SqlConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning
(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,
SqlCommand cmdHandler, SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader
ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds
(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery
(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation
expectation)
at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object
id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql,
Object obj, ISessionImplementor session)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---