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.  [ 3 posts ] 
Author Message
 Post subject: Bag Property is allways NULL initialized
PostPosted: Wed Jul 04, 2007 9:59 am 
Newbie

Joined: Wed Jul 04, 2007 9:28 am
Posts: 9
Hibernate version:1.0.4.0

Name and version of the database you are using: MS SQL SERVER 2005


Hi,

I ve declared a Bag in my mapping file:

<bag name="Details" inverse="true" lazy="true">
<key column="TerminalInvoiceId"></key>
<one-to-many class="Hobex.CRM.InvoiceDetails, Hobex.CRM.Models" />
</bag>

but the IList property allways is NULL initialized after creating the Object an following that i get a NullRefernce Exception when i try to call the Add Method. I worked with bags like this before and it just worked fine the Ilist properties where instantly initialized as hibernate bags.


Additional Infos:
the complete mapping of those two Objects:

<class name="Hobex.CRM.Invoice, Hobex.CRM.Models" table="TerminalInvoice">
<id name="Id" type="Int32" column="TerminalInvoiceID" access="field.pascalcase-m-underscore">
<generator class="identity" />
</id>
<property name="Number" column="InvoiceNumber" type="String" />
<property name="State" column="InvoiceStatusID" type="Int32" />
<property name="CreateDate" column="CreateDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<property name="CreateUser" column="CreateUser" type="String" />
<property name="ModifyDate" column="ModifyDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<property name="ModifyUser" column="ModifyUser" type="String" />
<property name="IntendedPurposeLineOne" column="IntendedPurpose1" type="String" />
<property name="IntendedPurposeLineTwo" column="IntendedPurpose2" type="String" />
<property name="IntendedPurposeLineThree" column="IntendedPurpose3" type="String" />
<property name="Information" column="InfoText" type="String" />
<property name="EnquiryDate" column="EnquiryDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<property name="Expenses" column="Spesen" type="Decimal" />
<property name="Amount" column="Amount" type="Decimal" />
<property name="Date" column="InvoiceDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<many-to-one name="Terminal" column="TerminalID" class="Hobex.CRM.Terminal, Hobex.CRM.Models" />
<many-to-one name="Kind" column="InvoiceKindID" class="Hobex.CRM.InvoiceKind, Hobex.CRM.Models" />
<many-to-one name="Tax" column="UstId" class="Hobex.CRM.Tax, Hobex.CRM.Models" />
<bag name="Details" inverse="true" lazy="true">
<key column="TerminalInvoiceId"></key>
<one-to-many class="Hobex.CRM.InvoiceDetails, Hobex.CRM.Models" />
</bag>

</class>
<class name="Hobex.CRM.InvoiceDetails, Hobex.CRM.Models" table="TerminalInvoiceDetails">
<id name="Id" type="Int32" column="TerminalInvoiceDetailsID" access="field.pascalcase-m-underscore">
<generator class="identity" />
</id>
<property name="Number" column="ProductNumber" type="String" />
<property name="Name" column="ProductName" type="String" />
<property name="UnitCount" column="ProductCount" type="Int32" />
<property name="PricePerUnit" column="ProductPrice" type="Decimal" />
<property name="CreateDate" column="CreateDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<property name="CreateUser" column="CreateUser" type="String" />
<property name="ModifyDate" column="ModifyDate" type="Nullables.NHibernate.NullableDateTimeType, Nullables.NHibernate" />
<property name="ModifyUser" column="ModifyUser" type="String" />
<many-to-one name="Invoice" column="TerminalInvoiceId" class="Hobex.CRM.Invoice, Hobex.CRM.Models" />
</class>

----------------------------

the tables:
the Details table ( represented by the bag )

CREATE TABLE [dbo].[TerminalInvoiceDetails](
[TerminalInvoiceDetailsID] [int] IDENTITY(1,1) NOT NULL,
[TerminalInvoiceId] [int] NOT NULL,
[ProductNumber] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ProductName] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ProductCount] [int] NULL,
[ProductPrice] [decimal](8, 2) NULL,
[CreateDate] [datetime] NULL,
[CreateUser] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ModifyDate] [datetime] NULL,
[ModifyUser] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_TerminalInvoiceDetails] PRIMARY KEY CLUSTERED
(
[TerminalInvoiceDetailsID] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[TerminalInvoiceDetails] WITH CHECK ADD CONSTRAINT [FK_TerminalInvoiceDetails_TerminalInvoice] FOREIGN KEY([TerminalInvoiceId])
REFERENCES [dbo].[TerminalInvoice] ([TerminalInvoiceID])
GO
ALTER TABLE [dbo].[TerminalInvoiceDetails] CHECK CONSTRAINT [FK_TerminalInvoiceDetails_TerminalInvoice]

-----------------------------
the base table TERMINALINVOICE
CREATE TABLE [dbo].[TerminalInvoice](
[TerminalInvoiceID] [int] IDENTITY(1,1) NOT NULL,
[TerminalID] [int] NOT NULL,
[InvoiceKindID] [int] NULL,
[InvoiceNumber] [nvarchar](16) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[InvoiceDate] [datetime] NULL,
[Amount] [numeric](11, 2) NULL,
[EnquiryDate] [datetime] NULL,
[InfoText] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DTID] [int] NULL,
[InvoiceStatusID] [int] NULL CONSTRAINT [DF_TerminalInvoice_InvoiceStatusID] DEFAULT (1),
[UStID] [int] NULL,
[Spesen] [numeric](11, 2) NULL,
[IntendedPurpose1] [nvarchar](57) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IntendedPurpose2] [nvarchar](57) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IntendedPurpose3] [nvarchar](57) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PaymentID] [int] NULL,
[CreateDate] [datetime] NULL,
[CreateUser] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ModifyDate] [datetime] NULL,
[ModifyUser] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IntendedPurpose4] [nvarchar](57) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CollInvRecipientID] [int] NULL,
[Months] [int] NULL,
[ksgBG] [numeric](11, 2) NULL,
[hobexBG] [numeric](11, 2) NULL,
[Miete] [real] NULL,
CONSTRAINT [PK_TerminalInvoice] PRIMARY KEY CLUSTERED
(
[TerminalInvoiceID] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [CollInvRecipient_TerminalInvoice_FK1] FOREIGN KEY([CollInvRecipientID])
REFERENCES [dbo].[CollInvRecipient] ([CollInvRecipientID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [CollInvRecipient_TerminalInvoice_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [DT_TerminalInvoice_FK1] FOREIGN KEY([DTID])
REFERENCES [dbo].[DT] ([DTID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [DT_TerminalInvoice_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [InvoiceKind_Accounting_FK1] FOREIGN KEY([InvoiceKindID])
REFERENCES [dbo].[InvoiceKind] ([InvoiceKindID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [InvoiceKind_Accounting_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [InvoiceStatus_TerminalInvoice_FK1] FOREIGN KEY([InvoiceStatusID])
REFERENCES [dbo].[InvoiceStatus] ([InvoiceStatusID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [InvoiceStatus_TerminalInvoice_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [Payment_TerminalInvoice_FK1] FOREIGN KEY([PaymentID])
REFERENCES [dbo].[Payment] ([PaymentID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [Payment_TerminalInvoice_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [Terminal_Accounting_FK1] FOREIGN KEY([TerminalID])
REFERENCES [dbo].[Terminal] ([TerminalID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [Terminal_Accounting_FK1]
GO
ALTER TABLE [dbo].[TerminalInvoice] WITH CHECK ADD CONSTRAINT [USt_TerminalInvoice_FK1] FOREIGN KEY([UStID])
REFERENCES [dbo].[USt] ([UStID])
GO
ALTER TABLE [dbo].[TerminalInvoice] CHECK CONSTRAINT [USt_TerminalInvoice_FK1]


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 04, 2007 6:04 pm 
Regular
Regular

Joined: Wed Apr 25, 2007 4:18 am
Posts: 51
Location: Belarus, Gomel
What do you mean by "creating the Object" - is it
Code:
Invoice newInvoice = new Invoice();

or
Code:
Invoice storedInvoice = session.Load(typeof(Invoice), 123) as Invoice;

In first case - NHibernate is absolutely none of its doing - it is you who must create some IList<InvoiceDetails> object - either in field definition, in class constructor or better in "Details" property setter (create it "on demand").
In second case - there may be some problem in Details setter... so you have to supply more info - at least Invoice class source (parts related to collection - field, property, constructors...) and small test case - code that fail.

_________________
WBR, Igor


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jul 05, 2007 4:43 am 
Newbie

Joined: Wed Jul 04, 2007 9:28 am
Posts: 9
hi,

thanks for your help i just found the error in one of our Domain classes

thread may be closed


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 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.