2012-06-21 4 views
0

두 테이블 사이에서 내부 조인을 만들었지 만 작동하지 않습니다. 누군가가 가능한 빨리 나를 도울 수 있다면 그것은 많은 도움이 될 것입니다. 사전에내부 조인이 작동하지 않습니다.

덕분에

그것은 다음과 같습니다

List<Bondetal> bondetals = session.createQuery("from Bondetal bd inner join bd.Bon b where bd.idbon = b.idbon and idprodus = " + idprodus +" and Bon.suma >=" + suma).list(); 

내가이 오류를 얻을 :

Exception in thread "AWT-EventQueue-0" org.hibernate.QueryException: could not resolve property: Bon of: sakila.entity.Bondetal [from sakila.entity.Bondetal bd inner join bd.Bon b where bd.idbon = b.idbon and idprodus = 2 and Bon.suma >=1] 
+0

우리에게 Bondetal 클래스 –

답변

0

가 가입 할 수있을하기를, 당신은 엔티티 사이의 연결이 필요합니다 . idbon 열이 협회 매핑되기 때문에 BonDetal 엔티티 따라서, 그것은 어떤 idbon 속성이 안

@ManyToOne 
@JoinColumn(name = "idbon") 
private Bon bon; 

같은 것을해야한다.

그리고 쿼리는 where bd.idbon = b.idbon 절을 필요로하지 않는다. 왜냐하면 Hibernate는 엔티티가 서로 어떻게 연관되어 있는지 알고 있기 때문이다. 쿼리는 이렇게해야한다 :

select bd from Bondetal bd 
inner join bd.bon b 
where bd.idprodus = :idprodus 
and b.suma >= :suma 

또한 SQL 주입 공격과 탈출 문제를 방지하기 위해, 오히려 쿼리에 값을 연결보다 명명 된 매개 변수를 사용해야합니다.

이 내용은 모두 Hibernate documentation에서 설명합니다. 그렇게 서둘러야하는 경우 임의의 쿼리를 시도하는 대신 읽어야합니다.

+0

를 보여줍니다. 너 나 많이 도와 줬어! 정말 고맙습니다. :) 나는 그 문서에서 읽으려고했지만 아주 잘 이해하지 못했습니다. 어쨌든 당신은 내 영웅입니다 !! – alin

관련 문제