如何在Hibernate中执行这样的查询?加盟

时间:2012-08-07 17:02:21

标签: java hibernate join

我有几个使用注释映射到数据库的对象类,需要一些帮助来解决如何组合Hibernate查询以获得我想要的结果。

我正在使用Hibernate 3.6.5。我一直在使用Criteria,但如果它有效,请对Query等感到满意!

我是Hibernate的新手(可以管理简单的Criteria来按属性过滤对象,但是连接的东西都是新的),所以答案中的任何解释(或建议的阅读)都会很棒。

RawRead有一个包含String的标记代码字段。 Checkpoint,IncidentItem和Guard类都具有TagCode属性。

我想检索所有RawRead对象,其中TagCode与任何其他类(IncidentItem,Guard,Checkpoint)的任何标记代码值都不匹配。

一种脑转储/伪造的SQL代码:

select raw.* from 
    RAWREADS raw, checkpoints c, GUARDS g, INCIDENTITEMS i 
    where 
    raw.tagcode != c.TAGNO
    and raw.TAGCODE != g.IDTAG
    and raw.TAGCODE != i.IDTAG;

我意识到这不会有效率,只是说明我的想法。

你能建议用Hibernate语言看一下吗?

修改/添加: RawRead对象映射到Guard和Checkpoint(有一个名为checkpoint的属性和一个名为guard的属性,它们都是这些类的实例 - 都是@ManyToOne)。

IncidentItem没有任何映射到其他类。

1 个答案:

答案 0 :(得分:2)

为了在HQL中连接对象,必须在应用程序级别的注释中映射它们之间的关系。如果没有映射关系,则需要在纯SQL中执行此类查询。