- 浏览: 656921 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
HkEndless:
不好意思,请问这确定是回调机制吗。你的例子中只是将接口的实现类 ...
Spring CallBack回调机制介绍 -
hanmiao:
写的真乱啊,完全不知所云...
Java如何调用可执行文件和批处理命令 -
junia_1:
junia_1 写道 shock: ...
为什么要使用EJB -
junia_1:
shock:
为什么要使用EJB -
coollifer:
不错
SQL Server数据导入到Oracle中的方法
/////////////////////////////////////////////////////////////////////////
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(Product.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("name"));
projList.add(Projections.groupProperty("name"));
crit.setProjection(projList);
List results = crit.list();
displayObjectsList(results);
HibernateUtil.checkData("select * from Supplier");
HibernateUtil.checkData("select * from Product");
}
static public void displayObjectsList(List list)
{
Iterator iter = list.iterator();
if (!iter.hasNext())
{
System.out.println("No objects to display.");
return;
}
while (iter.hasNext())
{
System.out.println("New object");
Object[] obj = (Object[]) iter.next();
for (int i=0;i<obj.length;i++)
{
System.out.println(obj[i]);
}
}
}
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();
}
}
/////////////////////////////////////////////////////////////////////////
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;
}
}
/////////////////////////////////////////////////////////////////////////
发表评论
-
hibernate Restrictions用法 MatchMode.ANYWHERE
2012-07-14 15:50 3945方法 说明 Res ... -
hibernate3 大批量更新/删除数据 (update/delete)
2011-11-10 12:15 1366Hibernate3.0 采用新的基 ... -
hibernate lazy(延迟加载)
2011-10-12 02:20 915hibernate lazy策略可以使用在: * < ... -
一些关于Hibernate延迟加载的误区
2011-09-12 23:13 887首先是第一个误区:延迟加载只能作用于关联实体 看到这个是 ... -
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling
2011-08-12 19:17 1245Hi I am facing a problem wit ... -
Criteria Condition: Match Mode End
2011-07-02 11:05 983//////////////////////////// ... -
Query Criteria Equal
2011-07-02 11:02 893/////////////////////////////// ... -
Criteria: Order
2011-07-02 10:59 768//////////////////////////// ... -
Criteria: Associations Sorting Criteria
2011-07-02 10:57 912//////////////////////////// ... -
hibernate的Query有没有setResultTransformer这个方法
2011-07-01 23:24 3083可以对原生SQL 查询使用ResultTransformer。 ... -
Hibernate中一级缓存、二级缓存及查询缓存的技术性总结
2011-06-21 17:31 1233一、 一级缓存 1. ... -
hibernate 保存 oracle 10g大数据字段
2011-06-14 04:01 1447Java代码 要点如下: ... -
Hibernate 错误原因总结
2011-06-14 00:10 14281、错误: object references an unsa ... -
MappingException提示Association references unmapped class错误的解决方法
2011-06-12 17:09 10出现如下错误信息时 Caused by: org.hibe ... -
Hibernate一对多关联映射的配置及其级联删除问题
2011-06-12 17:07 9首先举一个简单的一对多双向关联的配置: 一的一端:Quest ... -
Hibernate多对一关联映射原理、映射方法和数据的保存
2011-06-12 17:06 13Hibernate的多对一关联映射实现的基本原理就是: 在多 ... -
Hibernate一对多单向关联和双向关联映射方法及其优缺点
2011-06-12 17:05 11一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在 ... -
inverse = “true” example and explanation
2011-06-11 22:18 1119In Hibernate, only the “relatio ... -
ibatis和hibernate区别
2011-04-13 17:34 827ibatis:sql需要自己写 hibe ... -
Hibernate StackOverFlowError 异常出现的原因
2011-04-13 16:51 1274引起StackOverFlowError异常的一般是因为在程序 ...
相关推荐
这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友
4. **添加排序和分组**: 如果需要,可以使用Order和GroupBy来设置查询的排序和分组规则。 5. **执行查询**: 将所有的条件和设置传递给EntityManager的createQuery()方法,然后调用getResultList()或getSingleResult...
5. **分组(GroupBy)和聚合函数(Projections)** Criteria API也支持分组和聚合操作。通过调用setGroupBy()方法进行分组,使用Projections类的聚合函数,如count(), max(), min()等。 6. **关联查询(Joins)** ...
String hql = "select s.name ,avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); list = query.list(); ``` 在上面的代码中,我们首先创建了一个 HQL 查询字符串,然后使用 `...
Criteria API可以用于执行包含聚合函数如`avg()`的查询,如HQL中的`"select s.name ,avg(s.age) from Student s group by s.name"`。这可以通过添加投影和分组规则来实现。 7. **本地SQL查询**: 当需要执行原生...
String hql = "select s.name, avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); List[]> list = query.list(); ``` 此处使用 HQL 查询平均年龄,并按名字分组。 - **...
此外,它支持连接查询(join)、分组(group by)和Having条件,可以实现复杂的查询逻辑。 标签中提到的"源码"和"工具",意味着在深入学习Criteria API时,了解其底层实现和与其他工具(如IDE插件)的集成也是很...
这会生成类似SQL中的`GROUP BY`子句的查询,对数据进行分组统计。 ### 复杂查询和条件过滤 当需要执行更复杂的查询,比如包含条件过滤的查询时,可以利用`Restrictions`和`Example`。例如,如果要查找与特定用户...
1. **标准查询简介(QBC:Query By Criteria)** Criteria API 的核心在于`Criteria`对象,它是通过`Session`的`createCriteria()`方法创建的。以下是一个简单的例子,查询所有`Employee`类的实例: ```java ...
String hql = "select s.name, avg(s.age) from Student s group by s.name"; Query query = session.createQuery(hql); List[]> list = query.list(); ``` 此查询将返回每个学生名字及对应的平均年龄。 5. 本地SQL...
同时,我们可以通过`groupBy()`和`having()`来实现数据的分组和分组后的条件过滤,进一步提升查询的灵活性。 在实际应用中,CriteriaBuilder可以与ORM框架(如Hibernate或Sequelize)结合,无缝对接后端数据库。...
4. **分组与排序**: 使用`group by`和`order by`子句,如`select e.deptName, count(e) from Employee e group by e.deptName order by count(e) desc`按部门计数并降序排列。 5. **子查询**: 在HQL中可以嵌套查询...
- **分组(GroupBy)**:通过Criteria的setGroupProperty(String propertyName)或setGroupProperties(String[] propertyNames)方法实现数据的分组。 - **having**:Criteria的addHaving(Criterion having)方法用于...
3. **Criteria查询的构建**:包括选择实体(Select),指定查询的根实体(Root Criteria),添加限制条件(Restrictions),排序(Order),分组(Group By)以及聚合函数(Projections)等。 4. **Join操作**:在...
它支持连接(join)、分组(group by)、排序(order by)等复杂查询功能。 8. Criteria的子查询:在Criteria API中,可以通过Subqueries类创建子查询,用于实现复杂的查询逻辑。 9. 查询优化:了解如何使用缓存...
`criteria.add(Restrictions.sqlRestriction(" project_Id="+projectId+" connect by prior id= prev_ver ")).addxxx();` DetachedCriteria 查询提供了非常灵活的查询方式,可以满足各种复杂的查询需求。
EasyCriteria 是一个轻量级的框架用来创建和处理基于元数据、类型安全、可调式、可读和可维护的 JPA 2.0 查询...CriteriaComposer(Student.class).select(AggregateFunction.SUM,Student_.unit).groupBy(Student_.name)