gpt4 book ai didi

java hibernate 标准

转载 作者:行者123 更新时间:2023-12-01 14:56:48 26 4
gpt4 key购买 nike

我的数据库中有以下表结构:

 Table A:                     Table B:                       Table C:
_______________________ ______________________________ ______________________
| Field | Type | Key | | Field | Type | Key | | Field | Type | Key |
______________________| |_____________________________| |_____________________|
| a_id | Int | PRI | | a_id | Int | FK of A(a_id)| | c_id | Int | PRI |
| ... ... | | c_id | Int | FK of C(c_id)| | ... |
|_____________________| ______________________________ |_____________________|

和对象:

  class A {
List<C> list;
...
}

现在我想从数据库接收一个对象 A,其中包含由表 B 组合的所有 C 对象。我有接收正确对象 A 的条件,但我不知道如何接收该对象的列表相应的C对象:

    Criteria crit = ...;
A a = crit.uniqueResult();

这是给我正确结果的 SQL 查询,现在应该在条件中进行“翻译”:

 select c.* 
from A as a,
B as b,
C as c
where a.a_id = b.a_id and b.c_id = c.c_id;

有人知道如何制定标准吗?

最佳答案

如果你有

class A {
List<C> list;
...
}

并且 AC 都是 @Entity,您的条件必须如下所示:

// Create criteria on class A
Criteria criteria = session.createCriteria(A.class);

此时,如果您执行 criteria.list(),您将获得所有 A 对象,每个对象都有一个 C 值列表您只有 id。为了带来完整的 C 对象,您需要额外的:

criteria.createAlias("list", "listC");

这将为AC创建一个别名(即内部连接)。现在,假设您有一个 a (属于 A 类),您可以执行 a.getList().get(i).getWhateverFieldFromC() ;所以现在您已经为 A 的每个实例填充了 C 列表。

不要忘记最后执行criteria.list()来检索列表。仅此而已。

附注当然,这是假设实体 AC 已正确映射。

关于java hibernate 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14255813/

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