java - 使用 Criteria 进行连接

标签 java hibernate criteria criteria-api

我对 Hibernate 非常陌生。我已经用谷歌搜索了两个小时,但我仍然无法弄清楚,如何在不使用 HQL 的情况下仅按标准进行 JOIN 。我有表 Clients(cID, name) 和 Visits(vID, vcID, date)。该关系是一对多的(一个客户端可以多次访问)。我也想在没有 setFetchMode 的情况下做到这一点。只是标准。我必须更改映射 xml 吗?

更新: 这是我的映射 xml 的一部分:

 <class name="Client" table="Clients">
   <id name="cID" column="cID"><generator class="native"/></id>
   <property name="name"     length="10" not-null="true"/>
 </class>
 <class name="Visit" table="Visits">
   <id name="vID" column="vID"><generator class="native"/></id>
   <property name="vcID"     length="10" not-null="true"/>
   <property name="date" length="25" not-null="true"/>
 </class>

最佳答案

拥有一个类 Client,其列表属性“访问”映射到您的访问实体:

Criteria criteria = session.createCriteria(Client.class);
criteria.addCriteria("visits");

这将在您的客户表和访问表之间创建内部联接。

更新:

在这里您会找到一些很好的示例:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html#querycriteria-associations

映射示例

我很少使用 hibernate 映射 xml,但它应该读起来类似于:

   <class name="Client" table="Clients">
      <id name="cID" column="cID"><generator class="native"/></id>
      <property name="name"     length="10" not-null="true"/>

      <bag name="visits">
           <key column="vcId"/>
           <one-to-many class="Visit"/>
      </bag>
    </class>

告诉 Hibernate 有一个属性“visits”代表一对多关系。

关于java - 使用 Criteria 进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077979/

相关文章:

java - 使用 randomElement() 方法编写 Set 实现

java - 如何将用户输入的日期发送到 Hibernate + SQL db JSF 2.0

java - Eclipse 无法识别 Maven 项目中的任何错误

java - Java巨矩阵的行列式

java - 构造函数 - 不能应用于给定类型 - 需要 : no arguments

java - Hibernate:使用子选择和左外连接执行条件查询?

java - JPA 标准,例如 OneToOne 加入

java - Criteria API 组合 2 个实体

java - 了解线程+异步

java - 使用 hibernate4.1 和 spring 3.1 获取 LazyInitializationException