Hi,
我在使用hibernate遇到了一个问题,需要大家帮忙解决 这里有A,B,C个表 A->B->C 的级联关系,A的实体 可以通过 B实体 访问C实体的属性字段.
例如:String name = A.getB().getC().getName();
问题:现在知道C表中Name字段有个"zhang3";该如何通过Hibernate查询"zhang3"对应的A实体.
A B C
id type bid | id status cid | id name |
1 猫 1 | 1 0 2 | 1 li4 |
2 牛 2 | 2 5 1 | 2 zhang3|
类似这样根据B中status 为5 得到A对象为 :(2 牛 2)
A a = session.createCriteria(A.class)
.createAlias("b", "ob")
.add(Restrictions.eq("ob.status", 5))
.uniqueResult();Best regards.
XiangFang
我在使用hibernate遇到了一个问题,需要大家帮忙解决 这里有A,B,C个表 A->B->C 的级联关系,A的实体 可以通过 B实体 访问C实体的属性字段.
例如:String name = A.getB().getC().getName();
问题:现在知道C表中Name字段有个"zhang3";该如何通过Hibernate查询"zhang3"对应的A实体.
A B C
id type bid | id status cid | id name |
1 猫 1 | 1 0 2 | 1 li4 |
2 牛 2 | 2 5 1 | 2 zhang3|
类似这样根据B中status 为5 得到A对象为 :(2 牛 2)
A a = session.createCriteria(A.class)
.createAlias("b", "ob")
.add(Restrictions.eq("ob.status", 5))
.uniqueResult();Best regards.
XiangFang
解决方案 »
- 多个字符串如何替换
- 【高分求大神帮忙】关于spring aop 的 Interceptor afterCompletion调用service
- 请问谁有普元EOS5.3的视频教程及搭建的具体视频~我想学习
- 实际问题:整数*(28/30)的问题?求教
- 急求,正则表达式啊???(只能有数字,字母和冒号':')组成
- j2ee的问题,求大神指导。。
- 请教:DTD无法访问,导致解析DOM出错。
- 高分求助 关于定义 网页在不同分辨率下的 自适应大小
- 谁能告诉我Struts是怎么回事。干什么的。
- 那里有利用JAXP 1.2处理XML(基于XML Schema,而不是DTD)的JAVA程序例子!!! 200分!!!
- struts的<html:base/>的问题
- hibernate无异常即无法创建表
A a = session.createCriteria(A.class)
.createAlias("b", "ob",CriteriaSpecification.LEFT_JOIN)
.createAlias("ob.c", "oc",CriteriaSpecification.LEFT_JOIN)
.add(Restrictions.eq("oc.name", "zhang3"))
.uniqueResult();
A a = session.createCriteria(A.class)
.createAlias("b", "ob")
.createAlias("ob.c", "oc")
.add(Restrictions.eq("oc.name", "zhang3"))
.uniqueResult();
.createAlias("b", "b")
.createAlias("b.c", "b.c")
.add(Restrictions.eq("b.c.name", "zhang3"))
.uniqueResult();我需要这样的方法
下面是实现
public Criteria createCriteria(String[] property, Criterion... criterion){
Criteria criteria = this.getSession().createCriteria(entityClass);
for(String str : property){
criteria.createAlias(str, str);
}
for(Criterion c : criterion){
criteria.add(c);
}
return criteria;
}
Transaction tx = session.beginTransaction();Criteria c = session.createCriteria(A.class);
for(String s : str){
c.createAlias(s, s.replaceFirst("\\w+\\.", ""));
}
c.add(Restrictions.eq("x.id", 10));//此处写最后的查询条件,Ex:查的是x的id
List<A> list = c.list();
tx.commit();
Iterator<A> iter = list.iterator();
while(iter.hasNext()){
A a = iter.next();
System.out.println(a.getId() + "===" + card.getA().getId() + "+++" + card.getA().getB().getId()+............);
}