-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Problems while saving a new object
PostPosted: Tue Feb 06, 2007 10:36 am 
Newbie

Joined: Tue Feb 06, 2007 10:23 am
Posts: 1
Hi!

I'm having some problems while saving a new object in my database. I don´t know why. Recently I have changed the generator class of my ids from assigned to identity, and when the application fails, the error message says that my id is null, and it couldn't be saved.

The problem is when I try to save an IdentName object.

Hibernate version: 1.0.2

Mapping documents:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-lazy="false">
<class name="dataAccess.csfiles.datospersonalesygrupo.IdentName, dataAccess" table="identname">
<id name="IdName" column="idname" type="Int32">
<generator class="identity" />
</id>
<property name="Name" column="name" type="String"/>
</class>
</hibernate-mapping>

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" default-lazy="false">
<class name="dataAccess.csfiles.datospersonalesygrupo.MemberData, dataAccess" table="datospersonales">
<id name="IdPersonales" column="idpersonales" type="Int32">
<generator class="identity" />
</id>
<bag name="Idents" table="idents">
<key column="idpersonales" />
<composite-element class="dataAccess.csfiles.datospersonalesygrupo.Ident, dataAccess">
<property name="Number" column="number" type="String"/>
<property name="Place" column="place" type="String"/>
<property name="Date" column="date"/>
<many-to-one name="Name" cascade="save-update"
class="dataAccess.csfiles.datospersonalesygrupo.IdentName, dataAccess"
column="idname"/>
</composite-element>
</bag>
</class>
</hibernate-mapping>

Code between sessionFactory.openSession() and session.close():
public void saveIdentName(IdentName identName) {
if (!session.IsConnected)
session.Reconnect();

ITransaction transaction = null;

try
{
transaction = session.BeginTransaction();
session.SaveOrUpdate(identName);
transaction.Commit();
session.Disconnect();
}
catch (Exception e)
{
transaction.Rollback();
session.Disconnect();
throw e;
}
}

Full stack trace of any exception that occurs:
[SqlException (0x80131904): Cannot insert the value NULL into column 'idName', table 'curriculum.dbo.identname'; column does not allow nulls. INSERT fails.
The statement has been terminated.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +177
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +68
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +199
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2300
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +31
System.Data.SqlClient.SqlDataReader.get_MetaData() +62
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +294
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1021
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +314
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +20
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +107
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +10
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +9
NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd) in c:\net\nhibernate-1.2.0.Beta1\nhibernate\src\NHibernate\Impl\BatcherImpl.cs:182
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj, ISessionImplementor session) in c:\net\nhibernate-1.2.0.Beta1\nhibernate\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:1972

[ADOException: could not insert: [dataAccess.csfiles.datospersonalesygrupo.IdentName][SQL: INSERT INTO identname (name) VALUES (?)]]
dataAccess.csfiles.DBManager.saveIdentName(IdentName identName) in C:\Documents and Settings\César Díaz García\Mis documentos\Visual Studio 2005\Projects\dataAccess\dataAccess\DBManager.cs:169
Controlador.saveIdentName(IdentName identName) in c:\Documents and Settings\César Díaz García\Mis documentos\Visual Studio 2005\WebSites\proyecto\App_Code\Controlador.cs:80
web_privado_perfil_modificar.ButtonGuardar_Click(Object sender, EventArgs e) in c:\Documents and Settings\César Díaz García\Mis documentos\Visual Studio 2005\WebSites\proyecto\web\privado\perfil_modificar.aspx.cs:69
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +75
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +97
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4880

Name and version of the database you are using:
SQL Server 9.0.1399

The generated SQL (show_sql=true):
SQL: INSERT INTO identname (name) VALUES (?)

Debug level Hibernate log excerpt:


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 06, 2007 9:45 pm 
Regular
Regular

Joined: Tue Aug 08, 2006 4:28 am
Posts: 96
Location: Hong Kong
Would you post the CREATE statement of the table "identname"?
Is "idname" set to be an identity column in the table?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 06, 2007 11:40 pm 
Beginner
Beginner

Joined: Mon Jan 08, 2007 11:59 pm
Posts: 31
I am pretty sure that the column has not been set to Identity

Job Samuel


Top
 Profile  
 
 Post subject: Invalid SQL
PostPosted: Thu Feb 15, 2007 11:55 am 
Newbie

Joined: Wed Mar 29, 2006 4:42 am
Posts: 11
Location: Ware, Herts., UK
This may sound obvious, but the SQL generated is not valid, without the 'name' parameter.

Quote:
INSERT INTO identname (name) VALUES (?)


Are you sure you are setting the "Name" property of your object?

Are you sure it is being passed through correctly as a parameter?

Or have you resolved this already?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.