关于Hibernate Criteria API的问题

时间:2011-08-24 11:53:27

标签: hibernate criteria

我有两张桌子A和B:

A columns (ID,NameA,BiD)
B columns (ID,NameB)  

ID作为外部RelationMapping引用到Bid。 这是问题。我的Hibenate B实体没有List但是我的hibernate A实体有B实体实例。

select a.* from A a, B b 
where a.BiD=b.ID

如何在Hibernate Criteria Api中执行此查询? 我希望我能解释一下我的问题吗?

2 个答案:

答案 0 :(得分:0)

假设您想要的是找到具有特定B ID的所有A实例

Criteria c = session.createCriteria(A.class, "a");
c.add(Restrictions.eq("a.b.id", theIdOfB);
return c.list();

如果您必须搜索B的名称而不是B的ID,则需要加入:

Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.b", "b");
c.add(Restrictions.eq("b.name", theNameOfB);
return c.list();

与往常一样,所有这些都通过the reference documentation中的示例进行了解释。

答案 1 :(得分:0)

您无需加入查询中的类。此信息位于映射文件中。如果加载A,则加载B(可能是懒惰)。

Criteria c = session.createCriteria(A.class).list();

如果此答案没有帮助,您忘记提供有关所需查询的一些信息。