我想從特定表的數據庫中獲取數據,其中或者沒有連接到另一個表,或者存在但它不是正確的數據。HQL查詢 - 城堡活動記錄 - 外部加入
結構
我有一個域表。所有這些都包含域名和其他一些其他元數據。
我有一個功能表,所有這些都是一個ID列,併爲該功能的值的列。例如。它看起來是這樣的:
1 | First Registered
2 | Expired On
3 | Hosted On
等等
我有一個DomainData表。這保存了這些功能的值。列是這樣的。
ID | DomainId | FeatureId |值
本質上,它保存該域的功能值,類似於鍵值列,這樣它可以在不修改域表的表結構的情況下進行擴展。
現在,我需要做的是爲不具備的特徵X.
例如所有域做一個查詢,這部作品在SQL:
SELECT D.*
FROM Domain AS D
LEFT OUTER JOIN DomainData AS Data ON Data.DomainId = D.Id
WHERE data.featureId IS NULL OR data.FeatureId != @FeatureId
,在SQL工作正常,並返回所有需要的數據。所有這一切都是抓住所有或者沒有任何功能的域名,或者他們確實有功能,但不是我需要的功能。
現在我正在使用CastleActiveRecord作爲我的數據層,但我很努力地知道如何在HQL中編寫它。現在花了很多時間在上面,我要麼沒有收回任何東西,要麼回到所有的域名,不管他們的功能ID。不幸的是,我刪除了我嘗試過的所有HQL語句。
我可以在如何將上述語句重寫爲HQL方面獲得一些幫助嗎?
側面說明:我的班級裏面,我有這樣的DomainData類中:
[BelongsTo("DomainId")]
public Domain Domain { get; set; }
[BelongsTo("FeatureId")]
public Feature Feature { get; set; }
這我的域名類別內:
private IList<DomainData> featureData = new List<DomainData>();
[HasMany(typeof(DomainData), Table = "DomainData", ColumnKey = "DomainId")]
public IList<DomainData> FeatureData
{
get { return featureData; }
set { featureData = value; }
}
我認爲這是正確的數據結構?但如果我錯了,請糾正我。這可能是我如何做結構而不是查詢本身。