1
QueryOver API를 사용하여 아래의 HQL 쿼리를 어떻게 대체 할 수 있습니까? JoinAlias
및 JoinQueryOver
모두가 관련 기업에 대한 경로를 설명하는 표현을 필요로하기 때문에QueryOver를 사용하는 Crossjoin
var sql = "from Role r, Action a where r.Active = :active and a.Active = :active";
var result = manager.Session.GetISession().CreateQuery(sql)
.SetBoolean("active", true).List();
어, 아니 그것을하지 않습니다. 그것은 하나의 SQL 문을 생성 할 것입니다 ... –
위의 해결책은 예상치 못한 마법의 문자열 문제를 피할 수 있지만 그것이 좋다고 믿지는 않습니다. 이는 위의 문장이 NHibernate가 데이터베이스를 여러 번 querry로 유도하기 때문입니다. 역할 테이블에 4 개의 레코드가 있고 작업 테이블에 6 개의 레코드가 있다고 가정 해 보겠습니다. NHibernate가 실행하는 첫 번째 질의는 Role 테이블에서 4 개의 레코드를 반환하는 것이다. 그런 다음 반환 된 각 레코드에 대해 NHibernate는 데이터베이스를 읽어 Action 테이블에서 6 개의 레코드를 가져옵니다. 즉, 데이터베이스에 대한 경로 수는 첫 번째 쿼리에서 반환 된 레코드 수와 같고 한 쿼리에 추가됩니다. – tilonthuduc
Andrew, 나는 노력했다. 그리고 결과는 내가 위에서 기술했던 것이다. 같은 것을 할 수 있을까요? – tilonthuduc