EJB---->使用参数查询

命令参数的格式为:“: +参数名”

private String NameQuery(){
//获取指定personid 的人员
Query query = em.createQuery("select p from Person p where p.personid=:Id");
query.setParameter("Id",new Integer(1));

List result = query.getResultList();
位置参数的格式为“?+位置编号
@PersistenceContext
protected EntityManager em;
private String PositionQuery(){
//获取指定personid 的人员
Query query = em.createQuery("select p from Person p where p.personid=?1");
query.setParameter(1,new Integer(1));
List result = query.getResultList();
Date 参数
如果你需要传递java.util.Date 或java.util.Calendar 参数进一个参数查询,你需要使用一个特殊的setParameter()
方法,相关的setParameter 方法定义如下:
public interface Query
{
//命名参数查询时使用,参数类型为java.util.Date
Query setParameter(String name, java.util.Date value, TemporalType temporalType);
//命名参数查询时使用,参数类型为java.util.Calendar
Query setParameter(String name, Calendar value, TemporalType temporalType);
//位置参数查询时使用,参数类型为java.util.Date
Query setParameter(int position, Date value, TemporalType temporalType);
//位置参数查询时使用,参数类型为java.util.Calendar
Query setParameter(int position, Calendar value, TemporalType temporalType);
}
上面方法用到的TemporalType 参数定义如下:
package javax.persistence;
public enum TemporalType {
DATE, //java.sql.Date
TIME, //java.sql.Time
TIMESTAMP //java.sql.Timestamp
}

因为一个Date 或Calendar 对象能够描述一个真实的日期、时间或时间戳.所以我们需要告诉Query 对象怎么使用这些参数,我们把javax.persistence.TemporalType 作为参数传递进setParameter 方法,告诉查询接口在转换java.util.Date 或java.util.Calendar 参数到本地SQL 时使用什么数据库类型。

posted on 2012-05-18 08:53  小强斋太  阅读(300)  评论(0编辑  收藏  举报

导航