当前位置: 首页 > 知识库问答 >
问题:

Hibernate条件创建别名方法生成其他选择查询

越季萌
2023-03-14

Hibernate createalias()方法用于创建连接。当我调用s.iterator()方法时,hibernate是否正在生成另一个select查询以获取子记录?根据我的理解,它生成一个单选查询,以使用join获取父记录和子记录。

Criteria ct = sn.createCriteria(Vendor.class);      
Criteria ct1= ct.createAlias("children", "cust");   
List<Vendor> l = ct.list();
Iterator<Vendor> i = l.iterator();
while (i.hasNext()) {
    Vendor v = (Vendor) i.next();
    System.out.println("name " + v.getVendorname());
    Set<Customer> s = v.getChildren();
    Iterator<Customer> it = s.iterator();
    while (it.hasNext()) {
        Customer c = it.next();
        System.out.println("custname " + c.getCustomername());
    }
}

映射文件:

<hibernate-mapping>
    <class name="com.criteria.example.Customer" table="customer">
        <id name="customerid" column="cid">
            <generator class="native" />
        </id>
        <property name="customername" type="string">
            <column name="cname" length="10" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
<hibernate-mapping>
    <class name="com.criteria.example.Vendor" table="vendor">
        <id name="vendorid" column="vid">
            <generator class="native" />
        </id>
        <property name="vendorname" type="string">
            <column name="vname" length="10" not-null="true" />
        </property>
        <set name="children" inverse="false" cascade="all" lazy="false">
            <key column="vendid" not-null="true" />
            <one-to-many class="com.criteria.example.Customer" />
        </set>
    </class>
</hibernate-mapping>

共有1个答案

方河
2023-03-14

在谷歌上进行了多次搜索之后,我终于得到了这个问题的答案。生成额外的查询是hibernate中的一个错误。

 类似资料:
  • 如何在Hibernate中为下面给定的查询编写criteria builder api查询?batchId不是主键 从用户中选择批号('1','3') 我尝试过: 除了数据库中存在的数据外,我什么也得不到。

  • 我试图比较Hibernate条件和命名查询的性能。我知道这一切都取决于实际的查询本身,最后一个字取决于它们在运行时如何配置文件。尽管如此,试图理清每一个都有什么。 我试图将Q分为两个部分&寻找两者的验证/更正: 命名查询与HQL相比具有相同的优势--查询在启动时被解析一次。然后从应用程序中任何必要的地方执行。 第2部分--比较两者: 所以在这张图里, 提亚。

  • 假设我有一个名为HQL(findRoomQuery)的文件: House实体的映射如下: 虽然Room实体是这样的: 这种关系是一个房子可以有一个或多个房间。 执行查询的代码如下: 您可以从选择r(r是h.room列表的别名)中看到HQL返回房间实体。 如何使用Hibernate条件查询做同样的事情?可能吗?

  • 我想使用QueryDSL库构建select count查询,如下所示: 中选择计数(1) 我创建了下一个代码: 由于结果selectStatement是Next: 能否请一些人建议如何重写上面的代码

  • 问题内容: 我有2个表分别命名为项目和任务 在项目表中,我有: 在任务表中,我有: 现在,我该如何从任务表中选择*并在表任务中通过“ project_id”从项目表中获得“名称”? 谢谢 问题答案: 即使项目表中没有记录,使用左联接也可以确保您有所收获。如果要确保连贯性,可以这样做

  • 我希望,如果我选择“mammals”,动物选择选项只显示值为1的选项data-animal_class。 我知道如何获得哺乳动物值,但我不知道如何使用过滤器 这是我的代码: