【发布时间】:2014-11-02 17:29:23
【问题描述】:
我写的限制如下,
DateFormat df = new SimpleDateFormat("yyyy-mm-dd");
Date frmDate= df.parse("2014-01-01");
Date toDate=df.parse("2014-09-16");
Criteria criteria = session.createCriteria(HistoryLatitudeBean.class);
criteria.add(Restrictions.eq("vehicleno",12));
criteria.add(Restrictions.ge("rdate", frmDate));
criteria.add(Restrictions.lt("rdate", toDate));
criteria.add(Restrictions.between("rdate", frmDate, toDate));
List<HistoryLatitudeBean> groupList=criteria.list();// <---groupList contains same objects
for(HistoryLatitudeBean hb : groupList){
System.out.println(hb.getLat());
}
我的豆子是这样的,
@Entity
@Table(name="hlatlng")
public class HistoryLatitudeBean {
@Id
@Column(name="vehicleno")
private int vehicleno;
@Column(name="lat")
private String lat;
@Column(name="lng")
private String lng;
@Column(name="status")
private String status;
@Column(name="rdate")
private Date rdate;
@Column(name="rtime")
private Date rtime;
//getters and setters
}
我正在尝试以下查询,
select * from hlatlng where vehicleno=12 and rdate BETWEEN '2014-01-01' and '2014-06-05'
在 DB 中,它给出了 11 行具有差异值的行。
当我通过休眠条件执行它时,它给出了 11 个相同值的对象。我通过 Eclipse 中的调试检查了groupList 相同的id 中的所有对象,我该如何解决它。请帮帮我。
【问题讨论】:
-
你为什么要使用 gt、lt 和 between。对于清晰的查询,您可以使用 hql 并传递变量。 stackoverflow.com/questions/12699064/…
-
我试过这样,输出也一样。
-
您的
vehicleno是id。您如何期望通过 id 查询得到多个结果? -
哦,是的..,实际上该表中没有主键。如果我删除
@Id会导致任何问题吗?
标签: java sql hibernate hibernate-criteria