我有問題和時間花蜜卡告訴我,問stackoverflow社區。所以: 我有基本的版本控制系統的文件表示爲抽象類FileSystemEntry(FSE),它有2個孩子 - 文件和文件夾。還有FileSystemEntryVersion(FSEV)。 FSE有許多FSEV。NHibernate無法解決propery「class」
public abstract class FileSystemEntry
{
public FileSystemEntry(){}
public virtual long Id { get; protected set; }
public virtual IList<FileSystemEntryVersion> Versions { get; set; }
}
這裏是FSEV:
public class FileSystemEntryVersion {
public FileSystemEntryVersion(){}
public virtual long Id { get; protected set; }
public virtual String Name { get; set; }
//pointer to physical file/folder
public virtual FileSystemEntry FileSystemEntry { get; set; }
//pointer to parent file/folder
public virtual FileSystemEntry ParentFolder { get; set; }
}
這裏是FSE的hbm.xml文件中(最重要的部分)
<class name="FileSystemEntry" table="[FileSystemEntry]" abstract="true">
<id name="Id" type="Int64">
<generator class="identity" />
</id>
<discriminator column="Type"
not-null="true"
type="String"/>
<subclass name="File"
discriminator-value="File"/>
<subclass name="Folder"
discriminator-value="Folder"/>
</class>
每個FSEV(有父文件夾)。我想做一個查詢,它只獲取包含在父文件夾中的文件夾。我當前的查詢是:
IList<FileSystemEntryVersion> versions =
session.CreateCriteria<FileSystemEntryVersion>()
.Add(Restrictions.Eq("ParentFolder.Id", parentFolderId))
.Add(Restrictions.Eq("FileSystemEntry.class", typeof(Folder)))))
.List<FileSystemEntryVersion>();
return versions;
但FileSystemEntry.class中的屬性「class」被稱爲無法解析。爲什麼?
你有沒有嘗試過這樣的:http://stackoverflow.com/questions/17283070/nhibernate-query-by-discriminator-on-association – Najera
@Najera是的,我做了。但得到同樣的例外,直到我試圖這樣別名:CreateAliast(「FileSystemEntry」,「FileSystemEntry」)...但我不確定它爲什麼突然工作:) Radim科勒明確表示,但我發誓,我試了一下,它昨天沒有工作:D現在它確實.. – Milanec