gpt4 book ai didi

Hibernate 使用带有条件的别名

转载 作者:行者123 更新时间:2023-12-02 11:28:12 25 4
gpt4 key购买 nike

说实话,我对别名有点困惑,所以我希望有人能帮助我更好地理解它们。为了解释我所缺少的内容,我将使用示例。

假设我有:

Criteria criteria = session.createCriteria(Car.class)
criteria.createAlias("doors", "doors");

这意味着现在我可以使用一些限制来找到位于汽车左侧的门或类似的东西。

现在我的问题是我是否在哪里添加多个别名:

criteria.createAlias("doors", "doors").createAlias("doors.keytype", "keytype");

criteria.createAlias("tier".tier);

这是什么意思?我的 criteria 对象具有所有这些别名吗?在这种情况下,getAlias() 方法将返回什么?

来自 API:

Get the alias of the entity encapsulated by this criteria instance.

我的印象是所有别名都被这个实例封装了?我错了吗?我是否以某种方式丢失了我的第一个别名?

如果我做类似的事情:

Criteria criteri2 = criteria.createAlias("tier".tier);

这是否意味着 criteriacriteria2 点都是相同的 Criteria 或 diff,哪一个指向哪个别名?

此外,鉴于每个 createAlias 返回一个 Criteria,我应该将其分配给原始 criteria 还是新的?

好吧,我希望你能看到我的困惑。

最佳答案

What does this mean? That my criteria object has all of those aliases?

是的

In which case what will getAlias() method return?

getAlias 返回 createCriteria(Car.class) 中使用的类的别名 - 您尚未使用过,但可以指定:createCriteria (Car.class, "c"),其中 criteria.getAlias() 将返回 c

Does this mean that both criteria and criteria2 point are the same Criteria or diff and which one points to what alias?

Criteria API 中的大多数方法返回自己的标准以支持链接,以方便使用。您不需要保存返回的条件实例,因为该对象(及其内部属性)正在内部更改。

criteria.createAlias("a.b", "a_b").add(Restrictions.eq("a_b", value));

类似于

criteria.createAlias("a.b", "a_b");
criteria.add(Restrictions.eq("a_b", value));

所以...

Furthermore given that each createAlias returns a Criteria should I assign that to the original criteria or to the new one?

...不。对于 hibernate 的人来说,限制 Criteria 规范以强制程序员保存返回的实例是不可行的,而且它有点违反了 OO 标准假设条件对象没有改变。

关于Hibernate 使用带有条件的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078276/

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