`

Criteria: Associations Sorting Criteria

 
阅读更多

/////////////////////////////////////////////////////////////////////////
import java.util.*;

import java.sql.*;
import org.hibernate.*;
import org.hibernate.criterion.*;

public class Main {
  
  public static void main(String[] args) {
    HibernateUtil.setup("create table Supplier ( id int, name VARCHAR);");
    HibernateUtil.setup("create table Product ( id int, name VARCHAR, description VARCHAR, price double,supplierId int);");
    
    prepareData();
    Session session = HibernateUtil.currentSession();
    
        Criteria crit = session.createCriteria(Supplier.class);
        crit.addOrder(Order.desc("name"));
        Criteria prdCrit = crit.createCriteria("products");
        prdCrit.add(Restrictions.gt("price",new Double(25.0)));

        List results = prdCrit.list();
        displaySupplierList(results);
    
    
        HibernateUtil.checkData("select * from Supplier");
        HibernateUtil.checkData("select * from Product");

  }
    static public void displaySupplierList(List list)
    {
        Iterator iter = list.iterator();
        if (!iter.hasNext())
        {
            System.out.println("No suppliers to display.");
            return;
        }        
        while (iter.hasNext())
        {
            Supplier supplier = (Supplier) iter.next();
            String msg = supplier.getName();
            System.out.println(msg);
        }
    }

  private static void prepareData(){
        Session session = HibernateUtil.currentSession();

        Supplier supplier1 = new Supplier();
        supplier1.setName("Supplier Name 1");
        session.save(supplier1);
        
        Supplier supplier2 = new Supplier();
        supplier2.setName("Supplier Name 2");
        session.save(supplier2);        
        
        Product product1 = new Product("Product 1","Name for Product 1", 2.0);
        product1.setSupplier(supplier1);
        supplier1.getProducts().add(product1);
        session.save(product1);
        
        Product product12 = new Product("Product 2","Name for Product 2", 22.0);
        product12.setSupplier(supplier1);
        supplier1.getProducts().add(product12);        
        session.save(product12);
        
        Product product2 = new Product("Product 3", "Name for Product 3", 30.0);
        product2.setSupplier(supplier2);
        supplier2.getProducts().add(product2);
        session.save(product2);
        
        session.flush();
        HibernateUtil.closeSession();
  }
}


/////////////////////////////////////////////////////////////////////////

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:data/tutorial</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Mapping files -->
        <mapping resource="Product.hbm.xml"/>
        <mapping resource="Supplier.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

/////////////////////////////////////////////////////////////////////////

public class Product
{
    private int id;
    private Supplier supplier;
    
    private String name;
    private String description;
    private double price;
    
    public Product()
    {
        super();
    }
    
    public Product(String name, String description, double price)
    {
        super();
        this.name = name;
        this.description = description;
        this.price = price;
    }
    
    public String getDescription()
    {
        return description;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id = id;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
 
    public Supplier getSupplier()
    {
        return supplier;
    }
    public void setSupplier(Supplier supplier)
    {
        this.supplier = supplier;
    }
    
    public double getPrice()
    {
        return price;
    }
    public void setPrice(double price)
    {
        this.price = price;
    }
}



/////////////////////////////////////////////////////////////////////////
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
   PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
   <class name="Supplier">
      <id name="id" type="int">
         <generator class="increment"/>
      </id>

      <property name="name" type="string"/>
      <bag name="products" inverse="true" cascade="all,delete-orphan">
        <key column="supplierId"/>
        <one-to-many class="Product"/>
      </bag>


   </class>
</hibernate-mapping>




/////////////////////////////////////////////////////////////////////////

import java.util.ArrayList;
import java.util.List;

public class Supplier
{
    private int id;
    private String name;
    private List products = new ArrayList();
    
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id = id;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public List getProducts()
    {
        return products;
    }
    public void setProducts(List products)
    {
        this.products = products;
    }
}
 
分享到:
评论

相关推荐

    UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).pdf

    UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).pdf

    UN - Manual of Tests and Criteria:2019(Rev7) - 最新英文电子版(536页).zip

    《联合国试验与标准手册》(UN - Manual of Tests and Criteria)是国际上广泛采用的一份重要文献,主要用于规范危险货物的测试和分类标准。2019年发布的第七修订版(Rev7)包含了536页的详细内容,旨在确保全球范围...

    node-json-criteria:JSON对象Mongo风格的条件查询

    安装npm install json-criteria --save用法节点// npm install babel --save// Once at the entrypoint of your app.require('babel/register')var test = require('json-criteria').testconsole.log(test( {foo:1},...

    ReactiveMongo-Criteria:添加用于创建ReactiveMongo查询的条件DSL

    由于已停产,因此ReactiveMongo-Criteria已迁移回其原始位置(此存储库)。 仅从该项目中提取的最初是从现已停用的扩展项目中提取的。 ReactiveMongo-Criteria应该与从0.12开始的版本保持API兼容,因为该库仅依赖于...

    criteria:UFG 壁画验收测试标准

    "criteria:UFG 壁画验收测试标准"标题表明这是一个专门针对UFG壁画项目的验收测试规范。这个标准可能包含了对壁画项目在完成后的详细检查清单,以确保所有功能、性能、用户体验等方面都达到预期。 描述中的“标准”...

    VOLTA criteria:Cassandra Criteria Java库-开源

    Volta Criteria是一个Java库,专为希望在其Java应用程序中集成Cassandra数据库的用户提供,它为语句构造提供了直观的方法:执行CQL查询和语句时,您不必编写CQL代码(因此知道语法)。

    Hibernate中Criteria的完整用法

    Hibernate中的Criteria API是一种用于执行动态查询的机制,它允许开发者在运行时构建SQL查询,而无需直接编写SQL语句。Criteria API提供了更加面向对象的方式来处理数据库查询,这使得代码更易于理解和维护,尤其是...

    jcr-criteria:使用Java代码的JCR查询

    这是一种使用Java代码创建和执行JCR查询的方法,使用的接口受Hibernate / JPA使用的Criteria API的启发。 该代码基于Openmind开发的的 (openutils-mgnlcriteria)模块。 相较于openutils-mgnlcriteria存在于任何...

    Criteria标准化对象查询小例子

    在Java世界中,Criteria API是JPA(Java Persistence API)的一部分,用于构建动态、类型安全的查询。这个“Criteria标准化对象查询小例子”提供了一个实际应用Criteria API的示例,帮助开发者理解如何利用它来执行...

    exemplo-jpa-pesquisa-com-jpql-criteria:例子

    Java项目旨在提供使用JPQL查询和Criteria API的示例。 资料建模 例子: 与mappedBy联接:两个类之间的双向关系映射 延迟加载 延迟加载 FetchType EAGER 加入获取 上篮 使用SUM和AVG函数进行查询 数据访问对象(DAO...

    pm-criteria:PM评估标准

    有关产品管理人员评估标准的说明 期望的优势 所需的强度以及按级别分配的重量如下: 产品策略(5/15/30/40%) 拥有一个单一的,成文的,清晰的,可访问的产品策略,该策略阐明了产品的愿景,目标和路线图 ...

    Criteria的完整用法.pdf

    ### Criteria的完整用法详解 #### 一、概述 在基于Spring和Hibernate的项目开发中,Criteria API提供了灵活且强大的查询功能,使开发者能够轻松构建复杂的查询条件,从而提高数据检索的效率与精确度。本文将深入...

    hibernateCriteria查询

    ### Hibernate Criteria 查询详解 #### 一、概述 Hibernate Criteria 查询是一种强大的对象化查询方式,它为开发者提供了一种灵活而直观的方式来构建复杂的查询逻辑。与传统的SQL查询相比,Criteria查询更加面向...

    criteria介绍与使用

    ### Criteria介绍与使用 在Java开发中,特别是涉及到数据库操作时,经常需要用到各种查询方式来获取数据。在Hibernate框架中,`Criteria`提供了一种非常灵活且强大的查询机制,允许开发者构建复杂的查询条件,而...

    excel Criteria1实例.docx

    在Excel中,`Criteria1`是一个非常重要的参数,特别是在与VBA(Visual Basic for Applications)结合使用时,它用于定义筛选或过滤数据的条件。在上述的VBA代码实例中,`Criteria1`被用于自动筛选功能,允许用户根据...

    Hibernate Criteria 排序的問題

    ### Hibernate Criteria 排序问题详解 #### 一、前言 在使用Hibernate进行数据库操作时,经常需要对查询结果进行排序处理。对于简单的查询场景,使用HQL(Hibernate Query Language)即可轻松实现排序功能;但对于...

    Hibernate criteria基本操作

    Hibernate Criteria 是一种在Java应用程序中使用Hibernate ORM框架执行SQL查询的方式。它提供了一种面向对象的方式来构建查询,使得代码更加可读和易于维护。Criteria API 提供了多种方法来构建复杂的查询,包括添加...

    Criteria连表查询

    Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询

    Hibernate的Criteria用法总结

    在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...

    Multi-focus image fusion using a binary gradient-based Sharpness criteria:Multifocus image fusion using a binary gradient-based Sharpness criteria-matlab开发

    标题中的“Multi-focus image fusion using a binary gradient-based Sharpness criteria”是一种用于图像处理的技术,它涉及到多焦点图像的融合。这种技术旨在将不同焦距下的多张图像融合成一张具有全局清晰度的...

Global site tag (gtag.js) - Google Analytics