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: SUBCLASS attribute
PostPosted: Mon Jun 30, 2008 4:00 pm 
Newbie

Joined: Mon Jun 30, 2008 3:50 pm
Posts: 1
I'm trying to understand usage of SUBCLASS attribute of NHibernate.Mapping.Attributes. Following is the class the i made for testing

using NHibernate.Mapping.Attributes;

namespace SecurityClass1
{
[Class(0, Table = "attachment")]
[Serializable]
public abstract class Attachment
{
[Id(0, Name = "Id", TypeType = typeof(Guid), UnsavedValue = "00000000-0000-0000-0000-000000000000")]
[Generator(1, Class = "guid.comb")]
[Create(2)]
public virtual Guid Id {
get; set;}
[Discriminator(0, Column="attachment_type",Type="string")]
[Create(1)]
public virtual string attachment_type { set; get;}

[Property(0, NotNull = true,TypeType=typeof(String))]
[Create(1)]
public virtual string sentBy { set; get; }

}
[Subclass(0, Name = "ImageAttachment", DiscriminatorValue = "IMG", ExtendsType = typeof(Attachment) )]
[Serializable]
public class ImageAttachment: Attachment
{
[Property(0, Column = "image_size_width")]
[Create(1)]
public virtual float imageSizeWidth { get; set; }
[Property(0)]
[Create(1)]
public virtual float imageSizeHeight { get; set; }
}
[Subclass(0, Name = "TextAttachment", DiscriminatorValue = "TXT", ExtendsType = typeof(Attachment))]
[Serializable]
public class TextAttachment : Attachment
{
[Property(0, Column = "image_size_width")]
[Create(1)]
public virtual float textsize { get; set; }

}

}

and the code inside NHibernate class is (to generate the schema at runtime)

using System.IO;
using NHibernate;
using NHibernate.Cfg;
namespace SecurityClass1
{
public class NHibernateHelper
{
private static readonly ISessionFactory sessionFactory;
private static ISession session;


static NHibernateHelper()
{
Configuration conf = new Configuration().Configure();
System.IO.MemoryStream stream = new MemoryStream();
NHibernate.Mapping.Attributes.HbmSerializer.Default.Serialize(stream,
System.Reflection.Assembly.
GetExecutingAssembly());
stream.Position = 0;
conf.AddInputStream(stream);
stream.Close();
new NHibernate.Tool.hbm2ddl.SchemaExport(conf).Create(true, true);
sessionFactory = conf.BuildSessionFactory();
}
public static ISession getSession()
{
if (session == null)
session = sessionFactory.OpenSession();

return session;
}

}
}


When I trz to run this code i'm getting following error.
System.TypeInitializationException was unhandled
Message="The type initializer for 'SecurityClass1.NHibernateHelper' threw an exception."
Source="SecurityClass1"
TypeName="SecurityClass1.NHibernateHelper"
StackTrace:
at SecurityClass1.NHibernateHelper.getSession()
at SecurityClass1.SecurityPermissionDemo.Main(String[] args) in D:\C Sharp\SecurityClass1\SecurityClass1\Program.cs:line 26
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: NHibernate.MappingException
Message="Could not compile the mapping document: (unknown)"
Source="NHibernate"
StackTrace:
at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 262
at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 436
at NHibernate.Cfg.Configuration.ProcessMappingsQueue() in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1557
at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1548
at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 1541
at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 506
at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 480
at SecurityClass1.NHibernateHelper..cctor() in D:\C Sharp\SecurityClass1\SecurityClass1\NHibernateHelper.cs:line 32
InnerException: NHibernate.MappingException
Message="persistent class ImageAttachment not found"
Source="NHibernate"
StackTrace:
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 69
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(XmlNode node, PersistentClass model) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\ClassBinder.cs:line 112
at NHibernate.Cfg.XmlHbmBinding.SubclassBinder.HandleSubclass(PersistentClass model, XmlNode subnode) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\SubclassBinder.cs:line 30
at NHibernate.Cfg.XmlHbmBinding.SubclassBinder.Bind(XmlNode node) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\SubclassBinder.cs:line 23
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddSubclasses(XmlNode parentNode) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 91
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(XmlNode node) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\MappingRootBinder.cs:line 31
at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\Configuration.cs:line 431
InnerException: System.TypeLoadException
Message="Could not load type ImageAttachment. Possible cause: no assembly name specified."
Source="NHibernate"
TypeName=""
StackTrace:
at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name, Boolean throwOnError) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 284
at NHibernate.Util.ReflectHelper.ClassForName(String name) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Util\ReflectHelper.cs:line 174
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage) in c:\DATA\Projects\nhibernate\2.0.x\copy1\nhibernate\src\NHibernate\Cfg\XmlHbmBinding\Binder.cs:line 65
InnerException:

I'm sitting on this for last two days and couldn't figure out why it fails. Can any one help me?


Madhu


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.