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.  [ 1 post ] 
Author Message
 Post subject: Composite key problem while saving into oracle database
PostPosted: Sat May 08, 2010 12:55 am 
Newbie

Joined: Sat May 08, 2010 12:44 am
Posts: 1
Hi All,

Code that I am trying to execute. We have implemented similar way for fetching the data and it is working there.

Background: I have table TBL_Partner_Address and Class PartnerAddress
- Table contains composite key with AddressID,AddressType,PartyType and UID

//Partner address table - MAPPING table
PartnerAddress objPartnerAddress = new PartnerAddress();
P_Partner_Address objPk = new P_Partner_Address();
objPk.AddressID = 91;
objPk.Address_Type = 1;
objPk.Party_Type = 5;
objPk.UID = 80;
objPartnerAddress.Pk_Part_Address = ObjPk;
objPartnerAddress.UID = UID;
objPartnerAddress.AddressID = AddressID;
objPartnerAddress.Address_Type = 3;
objPartnerAddress.Party_Type = 5;
objPartnerAddress.Status = "OPERATIONAL";
objPartnerAddress.CreatedDate = DateTime.Now;
objPartnerAddress.LastUpdatedDate = DateTime.Now;

//Insert data into TBL_PARTNER_ADDRESS
int id = objNhiWrap.Save<PartnerAddress>(objPartnerAddress);

Class file:

public class PartnerAddress
{
[DataMember]
private P_Partner_Address _pk_Part_Address;

public virtual P_Partner_Address Pk_Part_Address
{
get { return _pk_Part_Address; }
set { _pk_Part_Address = value; }
}

[DataMember]
private int _UID;
public virtual int UID
{
get { return _UID; }
set { _UID = value; }
}
[DataMember]
private int _addressID;
public virtual int AddressID
{
get { return _addressID; }
set { _addressID = value; }
}
[DataMember]
private int _address_Type;
public virtual int Address_Type
{
get { return _address_Type; }
set { _address_Type = value; }
}
[DataMember]
private int _party_Type;
public virtual int Party_Type
{
get { return _party_Type; }
set { _party_Type = value; }
}
[DataMember]
private string _Status;
public virtual string Status
{
get { return _Status; }
set { _Status = value; }
}
[DataMember]
private DateTime _createdDate;
public virtual DateTime CreatedDate
{
get { return _createdDate; }
set { _createdDate = value; }
}
[DataMember]
private DateTime _lastUpdatedDate;
public virtual DateTime LastUpdatedDate
{
get { return _lastUpdatedDate; }
set { _lastUpdatedDate = value; }
}
}

/// <summary>
/// Class for defining composite Primary Key
/// </summary>
public class P_Partner_Address
{
private int _UID;
public virtual int UID
{
get { return _UID; }
set { _UID = value; }
}

private int _addressID;
public virtual int AddressID
{
get { return _addressID; }
set { _addressID = value; }
}

private int _address_Type;
public virtual int Address_Type
{
get { return _address_Type; }
set { _address_Type = value; }
}

private int _party_Type;
public virtual int Party_Type
{
get { return _party_Type; }
set { _party_Type = value; }
}

public override bool Equals(object obj)
{
if (obj == null)
return false;
PartnerAddress p = obj as PartnerAddress;
if (p == null)
return false;
if (this.UID == p.UID && this.AddressID == p.AddressID && this.Address_Type == p.Address_Type && this.Party_Type == p.Party_Type)
return true;
else return false;
}

public override int GetHashCode()
{
int hash = 13;
hash = hash + (null == this.UID.GetHashCode() ? 0 : this.UID.GetHashCode());
hash = hash + (null == this.AddressID.GetHashCode() ? 0 : this.AddressID.GetHashCode());
hash = hash + (null == this.Address_Type.GetHashCode() ? 0 : this.Address_Type.GetHashCode());
hash = hash + (null == this.Party_Type.GetHashCode() ? 0 : this.Party_Type.GetHashCode());
return hash;
}
}

Mapping file:
<?xml version="1.0" ?>
- <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Agility.MDM.DAL.BE" assembly="Agility.MDM.DAL.BE">
- <!-- Mappings for class 'Order'
-->
- <class name="PartnerAddress" table="TBL_PARTNER_ADDRESS" lazy="false">
- <composite-id name="Pk_Part_Address" class="Pk_Partner_Address">
<key-property name="UID" column=""UID"" />
<key-property name="AddressID" column="ADDRESS_ID" />
<key-property name="Address_Type" column="ADDRESS_TYPE" />
<key-property name="Party_Type" column="PARTY_TYPE" />
</composite-id>
- <!-- Simple mappings
-->
<property name="Status" column="STATUS" />
<property name="CreatedDate" column="CREATED_DATE" />
<property name="LastUpdatedDate" column="LASTUPDATEDDATE" />
</class>
</hibernate-mapping>

I am getting following Error:

Problem is: We have composite id (4 composite id make primary key) in one of the mapping table. When we try to save data on that table using NHibernate. We are getting following error:
“Unable to cast object of type 'Pk_Partner_Address' to type 'System.IConvertible'.”

We have already override method like Equals and GetHashCode to make it compatible with NHibernate


Please guide ASAP. Thanx in advance.


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

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.