使用 HibernateTemplate 进行持久化操作 执行的时候不报错,但数据库的持久化操作没有一点作用,问了好多人,说没有声明事务和提交事务, 用的是别人搭的的架构,事务已经有了,自动提交事务的,所以和事务没有关系,,搞了好久最后终于知道怎么回事了,真是一个让人蛋疼的问题啊!
/** * 删除该群里的所有用户(解散群聊) * @author 80818647@qq.com * @param groupId 群ID */ public void deletChatGroupUser(final long groupId) { execute(new HibernateCallback<ChatGroup>() { public ChatGroup doInHibernate(Session session) throws HibernateException { session .createSQLQuery("DELETE FROM user_chat_group WHERE chat_group_id=:groupId") .setLong("groupId", groupId) //因为少了这行代码,所以导致一直不报错,但是数据库还没反应。 // **只要是手写SQL对数据库进行了更改最后都是要加入.executeUpdate(); 除了select以外 .executeUpdate(); return null; } }); }
获取一个对象
/** * 获取群对象 * @author 80818647@qq.com * @param groupId 群ID * @return ChatGroup( 群组对象) 当前用户在此群的信息 */ public ChatGroup getChatGroupById(final long groupId) { return execute(new HibernateCallback<ChatGroup>() { public ChatGroup doInHibernate(Session session) throws HibernateException { return (ChatGroup) session .createSQLQuery("SELECT * FROM chat_group WHERE id=:groupId") .addEntity(ChatGroup.class) .setLong("groupId", groupId) .uniqueResult(); //返回一个唯一结果 对象 } }); }
count查询返回一记录数
//注意返回的必须是BigInteger类型 public BigInteger getTotalCount(final long postCategoryId) { return execute(new HibernateCallback<BigInteger>() { public BigInteger doInHibernate(Session session) throws HibernateException { return (BigInteger) session .createSQLQuery("SELECT count(*) FROM post where deleted > 0 and published > 0 and post_category_id=:postCategoryId ") .setLong("postCategoryId", postCategoryId) .uniqueResult(); } }); }