我的内心联盟不起作用

时间:2012-06-21 20:48:23

标签: hibernate inner-join entities

我在两个表之间建立了一个内连接,但是它没有用。 如果有人能尽快帮助我,那对我很有帮助。

提前致谢

看起来像这样:

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]

1 个答案:

答案 0 :(得分: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中解释。如果你很匆忙,你应该阅读它,而不是尝试随机查询。