2
可以说类'X'映射到表'X'类'A'映射到表'A',而类'B'映射到表'B'。Hibernate标准API查询继承问题
表X结构式:(X_ID,一些其它列 表的结构:(A_ID,X_ID,其他一些列) 表B结构:(A_ID,其他一些列)...表B也有A_ID
'B' 级扩展类 'A'我们有映射文件两者为:
类 'A' 父映射文件:
@Entity
@Table(name = 'A')
@Inheritance(stratergy=InheritanceType.Joined)
public abstract class A {
@Id @Clumns(name = "A_Id)
@GeneratedValue
protected Long aId;
-- some more A specific fields
}
“B”级映射文件:
@Entity
@Table(name= 'B')
Public class B extends A{
---- B specific fields
}
现在,我有一个SQL查询,如下我需要使用休眠标准API来编写。
select * from X
INNER JOIN A
ON X.id = A.id
INNER JOIN B
ON A.id = B.id
where B.name = 'XYZ'
and B.Sex = 'M'
我想出了:
Criteria c = session.createCriteria(x.class, "x");
.createAlias("x.a", "a")
.createAlias("a.b", "b")
.add(Restrictions.eq("b.sex", "M"))
.add(Restrictions.eq("b.name", "XYZ"));
但是,如果我们检查映射文件中,有B的A中没有直接提到因此休眠抛出“B不相关的A”实体。
有什么办法这个继承可以查询crteria映射
谢谢...像一个魅力工作...我应该早点知道它...现在很高兴知道它.. – user1502377 2012-07-05 15:02:28