帮忙看个hibernate的错

dd121011 2008-04-17 03:57:21
org.hibernate.QueryException: Not all named parameters have been set: [name] [from com.dong.bean.Actor as b where b.name=:name]
at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:284)
at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:268)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:75)
at com.dong.dao.RegistDao.saveBlog(RegistDao.java:27)
at com.dong.buiness.RegistBusiness.saveToBlog(RegistBusiness.java:13)
at com.yourcompany.struts.action.RegistAction.execute(RegistAction.java:76)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
---------------------------java原来代码
private static SessionFactory factory = SessionFactoryBuild.sessionFactory;
public static boolean saveBlog(Actor bb) {
Session session = null;
Transaction tx = null;
try {
session = factory.openSession();
tx = session.beginTransaction();
//查询是否有重名
String name = bb.getName();
Query query = session.createQuery(
"from com.dong.bean.Actor b where b.name=:name");
//query.setString("name", name);
List user = query.list();
//如果没有重名,则保存
if (user.size() == 0) {
session.save(bb);
} else {
throw new Exception("该用户名已存在!");
}
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
if (tx != null) {
tx.rollback();
return false;
}
} finally {
session.close();
}
return true;
}

}
...全文
260 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangfengshishouge 2008-04-17
  • 打赏
  • 举报
回复
?是一个占位符
dd121011 2008-04-17
  • 打赏
  • 举报
回复
能给讲下
Query query = session.createQuery("from com.dong.bean.Actor b where b.name=:name");

Query query = session.createQuery("from com.dong.bean.Actor b where b.name=?");
的区别吗?
dd121011 2008-04-17
  • 打赏
  • 举报
回复
呵呵
明白。。
阿轩 2008-04-17
  • 打赏
  • 举报
回复
//query.setString("name", name);
去掉注释
说明一下:去掉注释其实就是改成query.setString("name", name);
而不是去掉这句话
阿轩 2008-04-17
  • 打赏
  • 举报
回复
Query query = session.createQuery("from com.dong.bean.Actor b where b.name=:name");
改成
Query query = session.createQuery("from com.dong.bean.Actor b where b.name=?");
另外
//query.setString("name", name);
去掉注释
你先试试

jastby 2008-04-17
  • 打赏
  • 举报
回复
Query query = session.createQuery(
"from com.dong.bean.Actor b where b.name=:name");
//query.setString("name", name);

name 没有指定值
dd121011 2008-04-17
  • 打赏
  • 举报
回复
我写的查询语句有错吗?hql语句。。。
dd121011 2008-04-17
  • 打赏
  • 举报
回复
哪个name啊?在哪儿设置可以说下吗?
kingssq 2008-04-17
  • 打赏
  • 举报
回复
name参数没有设置。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧