Bor*_*vat 6 alias hibernate criteria
说实话,我对别名有点困惑,所以我希望有人可以帮助我更好地理解它们.为了解释我所缺少的内容,我将使用示例.
让我们说我有:
Criteria criteria = session.createCriteria(Car.class)
criteria.createAlias("doors", "doors");
Run Code Online (Sandbox Code Playgroud)
这意味着现在我可以使用一些Restrcitions来找到Car沿着这些线的左侧或其他东西的门.
现在我的问题是,如果我在哪里添加多个别名:
criteria.createAlias("doors", "doors").createAlias("doors.keytype", "keytype");
Run Code Online (Sandbox Code Playgroud)
和
criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我的criteria对象有所有这些别名?在哪种情况下,getAlias()方法会返回什么?
来自API:
获取此条件实例封装的实体的别名.
我的印象是所有的别名都被这个实例封装了?我错了吗?我不知何故失去了我的第一个别名?
如果我做的事情如下:
Criteria criteri2 = criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)
这是否意味着两者criteria和criteria2点都相同Criteria或差异,哪一个指向别名?
如果每个都createAlias返回一个Criteria应该我分配给原始criteria或新的?
好吧,我希望你能看到我的困惑.
这是什么意思?我的条件对象具有所有这些别名吗?
是的
在这种情况下 getAlias() 方法将返回什么?
返回在- 您尚未使用过getAlias的类的别名,但您可以指定: ,其中将返回。createCriteria(Car.class)createCriteria(Car.class, "c")criteria.getAlias()c
这是否意味着 criteria 和 criteria2 点都是相同的 Criteria 或 diff,哪一个指向哪个别名?
Criteria API中的大多数方法都会返回自己的条件以支持链接,以方便使用。您不需要保存返回的条件实例,因为对象(及其内部属性)正在内部更改。
criteria.createAlias("a.b", "a_b").add(Restrictions.eq("a_b", value));
Run Code Online (Sandbox Code Playgroud)
类似于
criteria.createAlias("a.b", "a_b");
criteria.add(Restrictions.eq("a_b", value));
Run Code Online (Sandbox Code Playgroud)
所以 ...
此外,考虑到每个 createAlias 返回一个 Criteria,我应该将其分配给原始标准还是新标准?
... 不。对于 hibernate 的人来说,限制 Criteria 规范以强制程序员保存返回的实例是不可行的,并且假设 Criteria 对象未更改,这有点违反 OO 标准。
| 归档时间: |
|
| 查看次数: |
17877 次 |
| 最近记录: |