我做spring项目以来的一些问题解决方法,给大家分享一下,呵呵!

[quote]
[list]
[1]
如果我们碰到控制台报这个错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'hbstpdb.hbstpdb__newskinds' doesn't exist
如去我们的XXXX.hbm.xml文件中找到这个语句
<class name="com.ngworld.bookstore.vo.Newskinds" table="newskinds" catalog=”hbstpdb”>
把上面的这个模式名(catalog=”hbstpdb”)删掉就不会出现上面的错误了
[2]


org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():



异常原因:
<id>元素配置不正确,<id>元素缺少其子元素<generator></generator>的配置。
解决方法:
<id>元素映射了相应数据库表的主键字段,对其子元素<generator class="">,其中class的取值可以为increment、identity、sequence、hilo、native……等,更多的可参考hibernate参考文档,一般取其值为native 。

所以我们去我们的vo包中,找我们对应的.hbm.xml的文件,把文件中的<id>配置改成increment就可以了(mysql)
如果我们用的是oracle数据库的话,多表的话我们是要建立sequence(序列的),所以也要把相应的序列文件加到里面
如:

<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence" >
<param name="sequence">productseq</param>
</generator>
</id>

[3]request的一个问题,解释如下:
这个是我们的action的页面准备文件:

protected Object FormBackingObject(HttpServletRequest request) throws Exception {
String id = request.getParameter("articleId");
Article list = articleService.getArticleById(id);
request.setAttribute("article",list);
return super.formBackingObject(request);
}


Article 是表 list是取出表中指定id的字段,然后通过request把list的值返回到页面中,在页面中就可以用article了,比如$(article.id) 这个里面的id是表的字段,然后通过这个jstl语句就可以取出article表中的id了,但是${article.id}的artciel必须和request.setAttribute("article",list);中引号中的变量一致,如果引号中换了别的变量则在引用中则用那个变量名,如:
request.setAttribute("articlelist",list);
那么在jsp中就这么引用${articlelist.id},所这个参数就可以直接在我们的jsp中引用了
[4]
[b]Lazy错误:[/b]
如果在控制台中报了如下的错误:

2008-08-20 17:09:57,812 ERROR [org.hibernate.LazyInitializationException] - <could not initialize proxy - the owning Session was closed>
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed


这里告诉我们session已经关闭了,所以我们要把我们的hibernate的.hbm.xml文件中的
Class中要把我们的lazy设置成false这样的错误就可以解决了。(注:记住这个是外键表的.hbm.xml文件,比如a表ID和b表ID是关联,b表ID是a表的外键,这个文件是b表的文件,只有lazy加在b表才有作用)
[b][color=darkred]例:[/color][/b]

<hibernate-mapping>
<class name="com.ngworld.bookstore.vo.Department" table="department" lazy="false" >
.......
</class>
</hibernate-mapping>


[5]
[b]For input string: "name"问题:[/b]

当控制台返回以下的错误时:
java.lang.NumberFormatException: For input string: "name"
我们可以去我们的action文件中输出些文件来看看具体是哪里出了问题:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
List categoryList=categoryService.getCategoryList();
for (int i=0;i<categoryList.size();i++){
System.out.println(categoryList.get(i).getClass());
}
request.setAttribute("categoryList", categoryList);
return new ModelAndView("/category/categoryList.jsp");
}


这个是我的action代码(controller),在这里我们可以用:
这个是我的action代码(controller),在这里我们可以用:
System.out.println(categoryList.get(i).getClass());
来输出看看我们哪个类出了问题
我报这个错误的时候是因为的hql语句写错了,所以改完了后就好了
String hql=”from category”;
Return getHibernateTemplelate.find(hql);
这个是我改后的正确代码
我之前错误的代码是这个:
String hql="from Category p left join p.department order by p.id";
return getHibernateTemplate().find(hql);
所以报了上面的错误,具体的我们可以在输出的类中我们把我们错误给找到!

[6]
[b]"table" is not mapped 解决方法:[/b]
这个问题是出在我们的hql语句当中的,其中查询的表是我们的pojo文件的名字而不是我们的表名字
例:
比如我们的pojo文件是CategoryPojo.java而我们的表的名字是category
如果我们的写下面的语句就会报上面的错误:

hql=”from category”
return getHibernateTemplelate.find(hql);

如果改成这个就不会有错误了

hql=”from CategoryPojo”
return getHibernateTemplelate.find(hql);


[7]
[b]Property 'name' not found on type java.lang.String问题解决方法:[/b]
当我们的控制台返回下面的错误时:

严重: Servlet.service() for servlet jsp threw exception
javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
at javax.el.BeanELResolver.property(BeanELResolver.java:279)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)



这里的错误告诉我们是我们的el表达式中出了错误
我到我的jsp文件中去看了看

<c:forEach items="categoryList" var="category" varStatus="status">
<tr>
<td><c:out value="${status.index+1}"/></td>
<td>${category.name}</td>
<td>${category.department.name}</td>
<td>${category.description }</td>
</tr>
</c:forEach>


看看我们的items这里,categoryList是我们request的一个参数,这里应该用items=${ categoryList } 用${}把我们的参数引起来,这个是jstl的语法,我们这样给改了之后,错误就可以解决了!


以上是我在学习spring 做个小小的项目的时候遇到的一些错误,因为控制台返回的信息不够明确所以在许多的地方遇到了问题,而且请教了许多的人才解决了以上的问题,希望这些对于大家来说有很大的帮助 :D
[/list][/quote]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI语言模型,我不能为您直接开发Spring Cloud项目。不过我可以为您提供一些指导和建议,帮助您开始开发自己的Spring Cloud项目。 首先,您需要了解Spring Cloud是一个基于Spring框架开发的微服务架构框架。它提供了一系列的工具和组件,包括服务注册与发现、服务调用、负载均衡、断路器、配置中心、消息总线等,为开发者提供了一种构建分布式系统的方式。 接下来,您可以根据自己的需求和业务场景,设计和构建自己的Spring Cloud项目。一般来说,一个Spring Cloud项目包含以下几个模块: 1. 服务注册中心:用于注册和管理各个微服务的信息,常用的服务注册中心有Eureka、Consul和Zookeeper等。 2. 服务提供者:提供具体的业务功能实现,向服务注册中心注册自己的信息。 3. 服务消费者:调用服务提供者提供的接口,根据自己的需求进行业务处理。 4. 服务网关:作为整个系统的统一入口,实现请求的路由、负载均衡、安全认证等功能。 5. 配置中心:用于管理各个微服务的配置信息,常用的配置中心有Spring Cloud Config和Apollo等。 6. 断路器:用于保护系统在高并发或故障情况下的稳定性,常用的断路器有Hystrix和Resilience4j等。 最后,您可以根据自己的需要,选择合适的技术栈和工具来实现您的Spring Cloud项目。常用的技术栈包括Spring Boot、Spring Cloud、MyBatis、Dubbo、RocketMQ等,常用的工具包括IDEA、Postman、Git、Docker等。 希望以上内容对您有所帮助,祝您开发Spring Cloud项目顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值