2012-06-21 39 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

爲了能夠使一個連接,你需要的實體之間的關聯。因此,BonDetal實體應該有類似

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

它不能有任何idbon財產,因爲idbon列由關聯映射。

而查詢不需要任何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