首页 文章

如何在hibernate标准上添加“on”子句?

提问于
浏览
0
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 回答

  • 1

    'createAlias'是'on'子句的添加 . 生成SQL时,别名转换为join子句 . 该查询将返回一个父对象列表 . Don 't really follow what you mean by 2730590 You'将有一个包含子对象的父对象列表 . 所有数据都代表了您映射它的方式 . 如果您希望以其他方式表示,那么您可能需要创建一个具有所需特定数据的新对象 .

    这导致了对性能的忽视,有时你会看到有人剪切并粘贴一个“标准”标准,创建每个可能的别名,然后添加他们需要的限制 . 不要这样做!只要你做'createAlias',你的SQL就会加入,无论你以后是否使用别名 . (可能不是什么大不了,取决于您使用的数据库的版本)

  • 2

    您不需要指定要加入的字段,因为它已在表映射中指定 . 例如:

    <bag name="Children">  
       <key column="ParentId" />  
       <one-to-many class="Parent" />  
    </bag>
    

相关问题