이 질문은 조금 올랐지 만 나는 아직 좋은 대답을 보지 못했다. 외래 키가없는 두 개의 클래스가 있으며 공통 필드 이외의 실제 관계는 없습니다.이 경우에는 "Title"입니다.NHibernate CreateAlias - 임의의 열에 조인
이것은 기존의 응용 프로그램에서 최근에 가져온 예제를 기반으로합니다. 스키마를 수정할 수 없으므로 단순히 외래 키를 추가하는 것이 옵션이 아닙니다. 내가 찾는 모든 지정된 타이틀과 과정에 대한 모든 전제 조건을 제공 할 쿼리입니다 :
select p.* from course c join prereq p on c.title = p.title
내가) (가입 같은 매핑을 찾는 게 아니에요, 등, hasMany의(), 이후 그들은 분명히 정의 된 관계를 요구합니다. 매핑이없는 임의의 열을 기반으로 두 개의 테이블을 조인하려고합니다.
비슷한 질문 asked here CreateAlias ()를 사용하여 가능하지만 나중에 좋은 예제를 찾지 못했음을 나타내는 것 같습니다.
<class name="Course" table="course">
<id name="id" column="id" type="long">
<generator class="identity" />
</id>
<property name="Title" column="Title" type="String" />
</class>
<class name="Prereq" table="prereq">
<id name="id" column="id" type="long">
<generator class="identity" />
</id>
<property name="Title" column="Title" type="String" />
<property name="PrereqTitle" column="PrereqTitle" type="String" />
</class>
이것은 내가 생각해 낸 것이지만 작동하지 않습니다. 어떤 제안?
LinqToSql을 사용하면이 작업을 수행하기가 쉽습니다. NHibernate의 Linq 공급자를 사용하여 수행 할 수 있습니까? 필자가 보았던 예제는 제공자가 기본적으로 NH가 사용하는 ICriteria/ICriterion 매직이 수행 한 쿼리를 종결하는 것으로 나타났습니다 - 가능하지는 않지만 실수라고 생각하면 수정 해주십시오.