我现在有两个类
[code="java"]
public class UserInfo {
private int userId;
private String name;
private String password;
private IdCard idCard;
private Set messages;
[/code]
[code="java"]
public class Message {
private int msgId;
private String ttl;
private String desc;
private Date date;
private UserInfo user;
private int version;
[/code]
我想在查询的时候通过UserInfo获取Message,然而要通过Date进行限制,也就是说我想通过user.getMessage()得到message,这些message要符合一些条件比如说日期都是2009/03/30日之前的;
之前无论我怎么做通过user.getMessage()得到的都是数据库里面的所有message信息,请教各位如何解决这个问题,谢谢了
给你个 例子
...
...
...
Session session = ...;
session.enabledFilter("effectiveDate").setParameter("asOfDate", new Date());
List results = session.createQuery("from Employee as e where e.salary > :targetSalary")
.setLong("targetSalary", new Long(1000000))
.list();
这个直接写应该是不行的,
[quote]message要符合一些条件比如说日期都是2009/03/30日之前的[/quote]
你可以在UserInfo中在写个方法
public Set getMessageWhere( String arg){
Set message=user.getMessage();
Set messageTemp=new HashSet();
for(Message m:message ){
if(m.getDate()<=arg){
messageTemp.put(m);
}
}
return messageTemp;
}
上面是伪代码,
你也可以再dao中写啊。
public Set getMessageByUserIdAndTime(UserInfo user,String date){
session.createQuery("From Message m
where m.user.id= :id and n.data<=:date").setString("id".user.getId()).setString("date",date).list();
}
上面的时间你要处理一下,
我有2中方法不知道行不行 你先试下第一种
Query q=session.createQuery("select u.message from UserInfo u and Message m where m.date=?").setDate(0,"放的是你得到的时间");
List list = q.list();
第2种
就是你查询的只查询对象 在通过对象查到里面的值
Query q1 = session.createQuery("select u,m from UserInfo u and Message m where m.date=?").setDate(0,"放的是你得到的时间");
List list=q1.list();
Object[] obj=(Object[]) list.get(0);//得到的第一条记录
UserInfo userinfo = (UserInfo) obj[1];//得到记录中的对象userinfo
Message message = (Message) obj[1];//得到记录中的对象message
这里我不知道你用的是什么 如果是有form就new一个form 在这里你的form中要把pojo对象作为form中的属性(这里我都不说了)
继续DAO中的方法new一个form
SearchForm searchForm=new SearchForm();
System.out.println(asearchForm.getu().getDate());//这样就可以得到值了
session.close();
return 你方法的定义的类型;
如果还是不行 我建议你把的你工程发给我 我帮你看看 ,可能我技术不行看不出来 你所给的信息我觉得还是少了点 呵呵~!
兄弟,我也有这问题!!虽然类型不同 但性质一样!User表 photos表 通过User表查到photos里的某一张照片!
呵呵,昨晚看了一下hibernate3.0,他提供了过滤器。刚好就是解决了你的问题。
之前我也不知道,