1.

Struts has detected an unhandled exception:

Messages: antlr.collections.AST.getLine()I
File: org/hibernate/hql/internal/ast/HqlSqlWalker.java
Line number: 929

  这个问题,每次都是重新编译后还会出现这个异常,原因是Struts2框架自带antlr2.7.2.jar和Hibernate框架自带的ntlr2.7.7.jar冲突了,故只要删除低版本的antlr2.7.2.jar就行,但是antlr2.7.2.jar是Struts2框架自带的,所以删除后重新编译还会再次出现,异常还是解决不了。

具体如下:
Window-->Preferences-->MyEclipse-->Project Libraries-->Struts 2.1 Libraries-->Core 你就会看到antlr2.7.2.jar,此时先勾选Enable advanced configuration,再去取消勾选antlr2.7.2.jar。

再去Workspace\.metadata\.me_tcat7\webapps\项目名\WEB-INF\lib下强制删掉antlr2.7.2,重启Tomcat,异常就不再出现。

两者缺一不可。


2.

hibernate 中 Provided id of the wrong type for class 异常

HTTP Status 500 - Provided id of the wrong type for class com.s_football.pojo.UserBean. Expected: class java.lang.Integer, got class java.lang.String; nested exception is org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.s_football.pojo.UserBean. Expected: class java.lang.Integer, got class java.lang.String

  

收集资料后发现:在HibernateTemplate中的get方法仅仅可以查找主键,不可以查找其他字段。其实是自己没有考虑好,在开始的时候自己还有过这样的疑问:get来查找是怎么对应字段,而且查找出来只是单个的,并不是个List。但是没有多想,现在用get来查找其他字段就抛出了了这个异常。
其实看到这个异常就可以知道,肯定是类型错误,像我这个就是String类型转int类型了(在使用get方法中)。
所以,检查一下类型匹配就可以解决了,包括是不是也用get方法查找其他字段了(其实也是类型匹配的问题)


 3.今天在使用hibernate向数据库中提交一份更新或者插入的时候,表面上是成功的执行了,而且刷新数据库也看见了数据元组中的项确实是改变了,但是当刷新Web页面使后台逻辑重新加载的时候,会时不时的发现bean的状态是外改动的状态,用统计学的方法统计了一下,正常与不正常的几率五五开。
原因:

这可能是由于tomcat这类容器的线程调度功能造成,以前我是用的HibernateUtil和ThreadLocal来实现线程内的session同步,但是当一个线程内对应的session刚刚执行完修改数据的操作之后,另一个线程(可能被分配来select数据库并显示)中的session并不能察觉到脏数据,导致界面上呈现出来的数据是为修改之前的,而当用户刷新Web浏览器的时候,有可能会分配之前的第一个线程来进行渲染界面,这就导致了显示了正常的结果,如此交替往复,可能就是我遇到的这个现象的原因了。

解决方法:和spring配合使用


4.

一般情况下,多对多的关联关系是需要中间表的;

情况一:如果中间表仅仅是做关联用的,它里面仅有2个外键做联合主键,则使用ManyToMany(不用写中间表的Model,只需要写出两张主表的model即可)

方案二   中间表中需要添加额外的字段 

情况二:如果中间表不仅仅是做关联用的,它里面包含了其他字段信息,仅仅靠多对多的关系是搞不定的。

解决方案:多对多的关系拆分为两个一对多。这时候三张表的Model都需要写。我们知道,一对多的关系,一般都是在多的一方做配置。

【参考】:

https://blog.csdn.net/zmx729618/article/details/52117510

https://blog.csdn.net/lijianqingfeng/article/details/35985657?utm_source=blogxgwz4


5.

删除数据库中的表时,需要关注是否有外键关联,可以先 SET FOREIGN_KEY_CHECKS=0 忽略外键关系,就可以修改表了,删除某张表需要先取消/删除它在别的表出现的数据。

不要让对象toString,很可能stackOverFlow栈溢出!


SSH项目中遇到的问题的更多相关文章

  1. 在SSH项目中实现分页效果

    在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web proj ...

  2. hessian在ssh项目中的配置

    一. 在服务端发布一个web项目 1.创建一个动态的web项目,并导入hessian的jar包 2. 在服务端的crm项目中创建接口 package cn.rodge.crm.service;impo ...

  3. SSH 项目中 使用websocket 实现网页聊天功能

    参考文章  :java使用websocket,并且获取HttpSession,源码分析    http://www.cnblogs.com/zhuxiaojie/p/6238826.html 1.在项 ...

  4. SSH 项目中 用Hibernate底层 简单的封装DAO层

    废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends Hiberna ...

  5. SSH实战 · SSH项目中怎么玩验证码

    大致思路与之前servlet中玩验证码类似,生成随机数,产生干扰线,画到图片上,保存到session中. 本人习惯用的时候专门写一个验证码的action:CheckImgAction. step1: ...

  6. Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

     1 修改pom.xml,添加依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId&g ...

  7. SSH项目中的困惑之一

    1.request.getContextPath()详解 <%=request.getContextPath()%>是为了解决相对路径的问题,可返回站点的根路径. 但不用也可以,比如< ...

  8. SSM&SSH项目中 springmvc 乱码问题解决

    需要在web.xml文件中配置过滤器: <!-- 过滤器 过滤乱码 --> <filter> <filter-name>characterEncodingFilte ...

  9. 在SSH项目中Struts2、Spring、Hibernate分别起到什么作用?

    (1)Struts主要起控制作用,Spring主要起解耦作用,Hibernate主要起操作数据作用. (2)Struts2是一个基于MVC设计模式的Web应用框架,在MVC设计模式中Struts2作为 ...

随机推荐

  1. job源码分析

    /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agree ...

  2. asyncio结合线程池

    #使用多线程:在协程中集成阻塞io import asyncio from concurrent.futures import ThreadPoolExecutor import socket fro ...

  3. vue router mode 设置"hash"与"history"的区别

    router官网的说明如下: ********************************************我是官网说明分隔符--开始**************************** ...

  4. bzoj 1057 单调栈

    首先我们可以枚举每个一点,然后向下一直拓展到不能拓展为止,然后向下拓展的同时我们可以算出来向左最多拓展的个数,用单调栈来维护一个上升的序列,这样就类似与悬线法找最大01子矩阵了,但是对于这题01交替来 ...

  5. javascript继承机制 & call apply使用说明

    一.继承机制 1.对象冒充:构造函数使用 this 关键字给所有属性和方法赋值,可使 ClassA 构造函数成为 ClassB 的方法,然后调用它. function ClassZ() { this. ...

  6. javascript中=、==与===的区别

    1.等号 =赋值运算符,给变量赋值 var a="1"; 2.相等和不相等操作符 相等操作符由==表示,若两个操作数相等,则返回true:不相等操作符由!=表示,若两个操作数不相等 ...

  7. Caffe 学习笔记1

    Caffe 学习笔记1 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和 ...

  8. 爬虫===登陆CSDN的方法

    本文主要介绍csdn的登陆,可应用在爬虫上~ # -*- coding:utf-8 -*- import json import requestsfrom xlutils.copy import co ...

  9. 学习 Linux,101: 自定义或编写简单脚本【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-lpic1-105-2/index.html 学习如何使用标准的 shell 语法.循环和控制结构,以及 ...

  10. 【openjudge】C15C Rabbit's Festival CDQ分治+并查集

    题目链接:http://poj.openjudge.cn/practice/C15C/ 题意:n 点 m 边 k 天.每条边在某一天会消失(仅仅那一天消失).问每一天有多少对点可以相互到达. 解法:开 ...