데이터베이스에 3 개의 테이블을 생성하고 데이터를 입력했습니다. 3 개의 테이블에는 모두 외부 키가 함께 있습니다. 아래는 테이블 클래스와 매핑입니다. 마지막에 나열된 쿼리를 실행하면 IList <>을 가져오고 모든 3 개의 테이블의 데이터를 갖게됩니다. 그러나, 내 HQL 쿼리는 최상위 테이블에서만 발생합니다. 최상위 테이블에서 결과를 어떻게 다시 얻을 수 있습니까? HQL 쿼리를 사용하는 테이블 대신 모든 테이블에서 데이터 가져 오기 1 테이블의 데이터 만 가져와야합니다.
이
내 클래스입니다 :public class Technology
{
public virtual int Id { get; private set; }
public virtual string Name { get; set; }
public virtual int SortOrder { get; set; }
public virtual string Abbreviation { get; set; }
public virtual IList<TechnologyDescription> TechnologyDescriptions { get; private set; }
public Technology()
{
TechnologyDescriptions = new List<TechnologyDescription>();
}
public virtual void AddTechnologyDescription(TechnologyDescription technologyDescription)
{
technologyDescription.Technology = this;
TechnologyDescriptions.Add(technologyDescription);
}
}
public class TechnologyDescription
{
public virtual int Id { get; private set; }
public virtual Technology Technology { get; set; }
public virtual string Description { get; set; }
public virtual DescriptionType DescriptionType { get; set; }
}
public class DescriptionType
{
public virtual int Id {get; private set;}
public virtual string Type { get; set; }
}
These are my mapping objects:
public class TechnologyMap : ClassMap<Technology>
{
public TechnologyMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.SortOrder);
Map(x => x.Abbreviation);
HasMany(x => x.TechnologyDescriptions)
.Inverse()
.Cascade.All();
}
}
public class TechnologyDescriptionMap : ClassMap<TechnologyDescription>
{
public TechnologyDescriptionMap()
{
Id(x => x.Id);
References(x => x.Technology);
Map(x => x.Description);
References(x => x.DescriptionType);
}
}
public class DescriptionTypeMap : ClassMap<DescriptionType>
{
public DescriptionTypeMap()
{
Id(x => x.Id);
Map(x => x.Type);
}
}
그리고 이것은 내 HQL 코드입니다 : 당신이 할 수있는, 그것은 HQL을 사용하여 가능하면 나도 몰라
IQuery q = session.CreateQuery("from Technology T");
IList technologies = q.List();
감사 : 게으른 로딩이 기본 유창 매핑 될 것처럼
최근 같습니다. 당신의 반응이 나를 도왔습니다. 감사! –