ステファンありがとうございました。ついにこの問題を解決することができました。
私は別の例を使用して問題をエミュレートしようとします。これは他の人にとって役に立ちそうですか?
問題:私は、2つのテーブルEmployeeとProjectがあり、プロジェクトテーブルにEmployeeコードを格納する2つのカラム「Lead」と「Manager」があるとします。マネージャの従業員コードに基づいてプロジェクトの詳細を取得しなければなりませんでした。鉛。
ここに私の問題の解決策があります。
従業員マッピングファイル。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Learn.Models" assembly="Learn.Models">
<class name="Employee" table="Employee">
<id column="Id" type="Int64">
<generator class="identity"></generator>
</id>
<property name="EntityId" column="EmployeeEntityId" not-null="true"></property>
<property name="FirstName" column="FirstName" not-null="true"></property>
<property name="LastName" column="LastName" not-null="true"></property>
<property name="DateOfBirth" column="DateOfBirth" not-null="true"></property>
<property name="EmpCode" column="EmpCode" not-null="true"></property>
</class>
</hibernate-mapping>
プロジェクトマッピングファイル:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Learn.Models" assembly="Learn.Models">
<class name="Project" table="Project">
<id column="Id" type="Int64">
<generator class="identity"></generator>
</id>
<property name="EntityId" column="ProjectEntityId" not-null="true"></property>
<property name="ProjectName" column="ProjName" not-null="true"></property>
<many-to-one name="ProjectManager" class="Employee" property-ref="EmpCode" column="Manager" lazy="proxy"></many-to-one>
<many-to-one name="ProjectLead" class="Employee" property-ref="EmpCode" column="Lead" lazy="proxy"></many-to-one>
</class>
</hibernate-mapping>
Employeeクラス:
public class Employee : IEntity
{
public Employee()
{
}
public virtual long Id { get; set; }
public virtual Guid EntityId { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual DateTime DateOfBirth { get; set; }
public virtual string EmpCode { get; set; }
}
プロジェクトクラス:
public class Project:IEntity
{
public virtual string ProjectName { get; set; }
public virtual Employee ProjectLead { get; set; }
public virtual Employee ProjectManager { get; set; }
public virtual long Id { get; set; }
public virtual Guid EntityId { get; set; }
}
「ProjectLead」と「ProjectManager」の従業員コードに基づいてプロジェクトの詳細を取得する必要がありました。これは私が使用したHQLクエリです。
string hql = "select p from Project p "
+ "join p.ProjectLead as lead "
+ "join p.ProjectManager as manager "
+ "where p.ProjectLead.EmpCode = 006 and "
+ "p.ProjectManager.EmpCode = 005";
HQLクエリで "a"と "e"とは何ですか? –
よく間違っていました(私の製造コードのものでしたが、今削除されています) – wizzardz