最近使用hibernate来做一个小论坛,现在想要实现一个功能,就是要把论坛的版块的信息显示出来,比如:版块名称 主题/帖子 更新时间j2ee 15/100 2010-06-06我数据库的信息是这样设计的帖子表card
cardId 帖子主键ID
title 主题名
content 内容
sendTime 发送时间
senderId 发送者ID(关联用户表的userId)
areaId 版块ID(关联版块表的版块Id)回复帖子表recard
keyId 主键标识ID
cardId 帖子Id(关联帖子表的cardId)
content 内容
receiverId 回复者的ID(关联用户表的userId)
reTime 回复时间板块表area
areaId 主键版块ID
areaName 版块名称显示怎么样显示上面所说的每一个版块的得主题数和回复数呢?hibernate是自动生成的类。。想知道怎么写hql语句
各位大侠指点一下。。小弟感激不尽在线等
cardId 帖子主键ID
title 主题名
content 内容
sendTime 发送时间
senderId 发送者ID(关联用户表的userId)
areaId 版块ID(关联版块表的版块Id)回复帖子表recard
keyId 主键标识ID
cardId 帖子Id(关联帖子表的cardId)
content 内容
receiverId 回复者的ID(关联用户表的userId)
reTime 回复时间板块表area
areaId 主键版块ID
areaName 版块名称显示怎么样显示上面所说的每一个版块的得主题数和回复数呢?hibernate是自动生成的类。。想知道怎么写hql语句
各位大侠指点一下。。小弟感激不尽在线等
板块主题数: select count(cardId) from card where areaId ='xxx';
回复数:select count(keyId) from recard rc where rc.cardId in (select cardId from card where areaId = 'xxId')
"FROM Aree"(版块表对应的类名) 其它的帖子数,和回复帖子数! 通过配置会自动加载过来的!!如果还不懂! 再问我!!!
查的话怎么查?
因为板块表和帖子表的关系是一对多,而不是多对一啊,,今天想了好久了。。我们前两天学的hibernate。。
麻烦您再解答一下
比较说要查询出版本id为1的那么hql这么写就可以了"FROM Area a where a.areaId = 1"主题数和回复数不用去管,因为配置了 hibernate会自动查询出来的(根据它们的主外键关系!)
用以查询所有的回复
我有段代码 贴给你吧 不知道有没有用 他是User 和 Folder 每个人都有很多的文件夹public class User {
private int uid;
private String name;
private String password;
private Set<Folder> folders=new HashSet<Folder>(); public User(){ }
//...getter and setter
public Set<Folder> getFolders(){
return folders;
}
}
//一下为Dao方法 public static void addFolder(Folder folder) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(folder);
session.getTransaction().commit();
} public static void addFolderToUser(int uid, int fid) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
User user = new User();
user = (User) session.load(User.class, uid);
Folder folder = new Folder();
folder = (Folder) session.load(Folder.class, fid);
user.getFolders().add(folder);
session.getTransaction().commit();
}//其中有个类交HibernateUtil
/**
*
* @author Damon
*/
public class HibernateUtil { private static final SessionFactory sessionFactory; static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
} public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
其实你的问题我没太看懂 不知道回答有没有用 哈哈