반응형
Hibernate 기준 : 매핑 된 연관없이 테이블 결합
Hibernate API를 사용하여 두 가지를 기준으로하는 특정 쿼리를 공식화하고 싶습니다. 두 개의 개는, 애완 동물 및 소유자가있는 소유자가 많은 애완 동물을 가지고있는 가정 해 보겠습니다. 그러나 결정적으로 연관은 Java 주석 또는 xml에 매핑되지 않습니다.
hql을 사용하여 쿼리에 조인을 대신하여 'fido'라는 애완 동물이있는 대신 선택할 수 있습니다 (소유자 클래스에 애완 동물 집합을 추가하는 대신 지정 가능).
최대 대역폭을 사용하여 동일한 작업을 수행 할 수 있습니까? 어떻게 어떻게?
고마워, J
내 이해는 HQL을 사용하여이 작업을 수행하면 내부 조인이 아닌 필터를 사용하여 데카르트 조인을 만드는 것입니다. 기준 쿼리는이 작업을 지원하지 않습니다.
이 기준으로 실제로 가능합니다.
DetachedCriteria ownerCriteria = DetachedCriteria.forClass(Owner.class);
ownerCriteria.setProjection(Property.forName("id"));
ownerCriteria.add(Restrictions.eq("ownername", "bob"));
Criteria criteria = getSession().createCriteria(Pet.class);
criteria.add(Property.forName("ownerId").in(ownerCriteria));
업데이트 : 실제로 조인 대신 하위 쿼리를 수행하지만 최대 제외 관계가 정의되지 않은 두 엔터티에 기준을 사용할 수 있습니다.
NHibernate에서는 DetachedCriteria로 정의 된 하위 쿼리를 사용할 수 있습니다. Java에서 대부분 동일하게 작동하는지 확실하지 않습니다.
DetachedCriteria pets = DetachedCriteria.For<Pet>("pet")
.SetProjection(Projections.Property("pet.ownername"))
.Add(/* some filters */ );
session.CreateCriteria(typeof(Owner))
.Add(Subqueries.PropertyIn("name", pets);
소유자의 이름을 사용하여 사용자 정의 가정합니다.
Criterion ownerCriterion = Restrictions.sqlRestriction(SELECT ownerId FROM Owner WHERE ownerName ='bob');
Criteria criteria = getSession().createCriteria(Pet.class);
criteria.createCriteria("ownerId").add(ownerCriterion);
있다 SQLCriterion
당신이 임의 줄 수있는 SQL
, 그리고 추가 Criteria
. 에서 SQL
토큰 토큰 {별명} "루트는 별명으로 대체됩니다."
반응형
'ProgramingTip' 카테고리의 다른 글
NoSQL의 트랜잭션? (0) | 2020.11.05 |
---|---|
MVC 3 : HtmlHelpers를 사용하여 추가 된 특성을 조건부로 추가 (0) | 2020.11.05 |
DropDownList의 ListItems 속성이 포스트 백에서 검증? (0) | 2020.11.04 |
자바는 오픈 소스 프로그래밍 언어입니까? (0) | 2020.11.04 |
생성시 "ID 필드가 필요합니다"유효성 검사 메시지; (0) | 2020.11.04 |