DetachedCriteria criteria = DetachedCriteria.forClass(Parent.class,"parent");
criteria.createAlias("parent.child","thechild");
criteria.add(Restrictions.eq("thechild.property", "somevalue");
我读了很多像上面这样的示例代码,这里标准连接两个表,父和子,但我不知道如何/在何处指定条件的On条件 .
如下
select * from parent inner join child on parent.childid = child.id
但在上面的标准中,我只是找不到添加 on
条件的位置 . 我应该在休眠配置文件中设置它吗?是否可以在查询中设置?
如何在连接后获取两个表中所有字段的内容?创建一个包含两个表中所有字段的新类?
2 回答
'createAlias'是'on'子句的添加 . 生成SQL时,别名转换为join子句 . 该查询将返回一个父对象列表 . Don 't really follow what you mean by 2730590 You'将有一个包含子对象的父对象列表 . 所有数据都代表了您映射它的方式 . 如果您希望以其他方式表示,那么您可能需要创建一个具有所需特定数据的新对象 .
这导致了对性能的忽视,有时你会看到有人剪切并粘贴一个“标准”标准,创建每个可能的别名,然后添加他们需要的限制 . 不要这样做!只要你做'createAlias',你的SQL就会加入,无论你以后是否使用别名 . (可能不是什么大不了,取决于您使用的数据库的版本)
您不需要指定要加入的字段,因为它已在表映射中指定 . 例如: