hibernate 查询时 对日期的比较

本文介绍如何使用Hibernate中的BETWEEN准则,通过示例演示了如何基于日期范围查询Insurance实体类的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://www.roseindia.net/hibernate/hibernate-between-date.shtml[/url]
Hibernate's Built-in criterion: Between (using with Date)
In this section, you will learn to use "between" i.e.one of the built-in hibernate criterions. Restriction class provides built-in criterion via static factory methods. One important method of the Restriction class is between : which is used to apply a "between" constraint to the named property

In this tutorial, "Between" is used with the date object. It takes three parameters e.g. between("property_name",startDate,endDate)

Here is the code of the class using "between" with the Date class :
package roseindia.tutorial.hibernate;

import org.hibernate.*;
import org.hibernate.criterion.*;
import org.hibernate.cfg.*;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author Deepak Kumar
*
* http://www.roseindia.net
Hibernate Criteria Query Example
*
*/public class HibernateCriteriaQueryBetweenDate {
public static void main(String[] args) {
Session session = null;
try {
// This step will read
hibernate.cfg.xml and prepare hibernate for
// use
SessionFactory sessionFactory
= new Configuration().configure()
.buildSessionFactory();
session = sessionFactory.openSession();
//Criteria Query Example
Criteria crit =
session.createCriteria(Insurance.class);
DateFormat format =
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startDate =
(Date)format.parse("2005-01-01 00:00:00");
Date endDate =
(Date)format.parse("2005-03-03 00:00:00");
crit.add(Expression.between
("investementDate", new Date(startDate.getTime()),
new Date(endDate.getTime()))); //
Between date condition
crit.setMaxResults(5); //
Restricts the max rows to 5

List insurances = crit.list();
for(Iterator it =
insurances.iterator();it.hasNext();){
Insurance insurance =
(Insurance) it.next();
System.out.println("
ID: " + insurance.getLngInsuranceId());
System.out.println("
Name: " + insurance.getInsuranceName());
System.out.println("
Amount: " + insurance.getInvestementAmount());
System.out.println("
Date: " + insurance.getInvestementDate());

}
session.close();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
}
}
}

Download this code:

Output:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

Hibernate: select this_.ID as ID0_0_, this_.insurance_name as insurance2_0_0_, this_.invested_amount as invested3_0_0_,
this_.investement_date as investem4_0_0_ from insurance this_ where this_.investement_date between ? and ? limit ?

ID: 1

Name: Car Insurance

Amount: 1000

Date: 2005-01-05 00:00:00.0

ID: 4

Name: Car Insurance

Amount: 2500

Date: 2005-01-01 00:00:00.0

ID: 7

Name: Travel Insurance

Amount: 2000

Date: 2005-02-02 00:00:00.0

ID: 8

Name: Travel Insurance

Amount: 600

Date: 2005-03-03 00:00:00.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值