gpt4 book ai didi

java - 为具有多个关系的表创建 Hibernate 条件查询

转载 作者:行者123 更新时间:2023-11-29 05:01:19 25 4
gpt4 key购买 nike

我有一个类似这样的表结构...

class A{
Integer id;

@OneToMany //
List<B> b;

}

Class B{

Integer id;

@ManyToOne
A a;

@OneToMany
List<C> c;
}

Class C{

Integer id;

String someField;

@ManyToOne
B b;

}

现在,我想查询 C.someField 等于传递的参数的所有 A 类条目。

注意:A和C没有直接关系

关系就像 A -> List < B > 和 B -> List < C >,我需要在整个 C 列表中检查它。

如何为此类问题创建条件查询?

最佳答案

关于你的问题的查询是这样的,

SELECT c1.name, c1.id
FROM c c1
JOIN b b1 on c1.b_id = b1.id
JOIN a a1 on b1.a_id = a1.id
WHERE a1.name = 'ABC'

所有 A 类条目,其中 C.someField 等于传递的参数,如“ABC”

解决方案:

Criteria c_criteria = getCurrentSession().createCriteria(C.class,"c1"); 
Criteria b_criteria = c_criteria.createCriteria("b","b1");
Criteria a_criteria = b_criteria.createCriteria("c","c1");
a_criteria.add(Restrictions.eq("name", "ABC"));

ProjectionList properties = Projections.projectionList();
properties.add(Projections.property("someField"));
properties.add(Projections.property("id"));

c_criteria.setProjection(properties);
c_criteria.list();

关于java - 为具有多个关系的表创建 Hibernate 条件查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com