原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://qingkechina.blog.51cto.com/5552198/1377044

一、调试《【斗医】【8】Web应用开发50天》数据表映射方法

   本来想把数据库配置、Hibernate连接封装和映射配置一块写的,但由于个人时间问题时断时续,思路也多次被打断,所以在此对其进行弥补。

   若读者把上篇的附件下载下来运行,会发现运行失败,下面随着异常分析并解决。

1、截止目前系统所使用的Jar包

 【斗医】【9】Web应用开发20天

2、通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  java.lang.NoClassDefFoundError: org/dom4j/DocumentException

  【问题原因】:系统缺少dom4j.jar包,下载放入到运行环境D:\medical\war\WEB-INF\lib下(我会把系统所依赖的所有jar以附件的形式陆续上传,因为上传附件有大小限制,不能一次上传完


3、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager

  【问题原因】:系统缺少hibernate-commons-annotations.jar包,下载放入到运行环境中


4、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger

  【问题原因】:系统缺少jboss-logging.jar包,下载放入到运行环境中


5、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  java.lang.NoClassDefFoundError: javax/transaction/SystemException

  【问题原因】:系统缺少jboss-transaction-api_1.2_spec-1.0.0.Final.jar包,下载放入到运行环境中


6、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  java.lang.NoClassDefFoundError: javax/persistence/EntityListeners

  【问题原因】:系统缺少hibernate-jpa-2.1-api-1.0.0.Final.jar包,下载放入到运行环境中


7、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister

  【问题原因】:系统缺少javassist-3.18.1-GA.jar包,下载放入到运行环境中


8、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect

  【问题原因】:从提示上看是连接失败了,所以先查看数据库服务是否启动。由于我使用的是window操作系统,所以只需要在操作系统任务栏上右键,选择“任务管理器”,在“进程”页签查看“映射名称”是否有mysql服务存在?从下图可见mysql服务并未启动,所以启动它

   【斗医】【9】Web应用开发20天

     

9、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

  Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

  【问题原因】:检查D:\medical\war\etc\hibernate.cfg.xml文件中数据库配置是否正确,配置如下:

   <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

   <property name="connection.url">jdbc:mysql://localhost:3306/medical</property>

   <property name="connection.username">root</property>

   <property name="connection.password">Changeme123</property>

   由于前段时间我重新配置了mysql的密码,所以更改为新密码即可

   【备注】:若连接不通过,还需要检查系统防火墙是否开启,是否把端口号添加到例外中?


10、再通过Eclipse启动Tomcat,抛出如下异常:

  严重: StandardWrapper.Throwable

org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [net.sf.hibernate.dialect.MySQLDialect] as strategy [org.hibernate.dialect.Dialect]

 【问题原因】:D:\medical\war\etc\hibernate.cfg.xml文件中SQL方言配置错误,把<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>改为<property name="dialect">org.hibernate.dialect.MySQLDialect</property>


11、再通过Eclipse启动Tomcat,启动正常

  (1)此时系统所依赖的JAR包如下:

  【斗医】【9】Web应用开发20天

  (2)此时系统的hibernate.cfg.xml内容如下:

【斗医】【9】Web应用开发20天



二、创建数据库medical和数据表usertable

1、打开Mysql的命令行终端,并输入正确的密码,如下图:

  【斗医】【9】Web应用开发20天

2、创建数据库medical

  在窗口中输入“CREATE DATABASE MEDICAL;”回车,一定要有分号。


3、创建数据表usertable

  在窗口中输入“CREATE TABLE USER(userId VARCHAR(20) PRIMARY KEY NOT NULL, userAuth VARCHAR(64), userSign VARCHAR(64), attention VARCHAR(10));”回车,一定要有分号

三、创建数据表usertable的映射文件

1、在运行环境D:\medical\war\etc\mapping下创建user.hbm.xml文件,输入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
                                                                       
<hibernate-mapping package="com.medical.server.dao">
    <class name="UserDAO" table="USERTABLE">
        <id name="userId" column="userId" type="string">
            <generator class="uuid.hex" />
        </id>
        <property name="userAuth" column="userAuth" />
        <property name="userSign" column="userSign" />
        <property name="attention" column="attention" />
    </class>
</hibernate-mapping>


(2)创建com.medical.server.dao.UserDAO.java类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * 用户ID
 */
private String userId = null;
/**
 * 用户鉴权字符串
 */
private String userAuth = null;
/**
 * 用户自我描述
 */
private String userSign = null;
/**
 * 用户关注领域
 */
private String attention = null;

  里面定义4个字符,与数据表userTable中的字段相对应,然后对其设置set&get方法


(3)再通过Eclipse启动Tomcat,启动正常。


本文出自 “青客” 博客,请务必保留此出处http://qingkechina.blog.51cto.com/5552198/1377044

相关文章:

  • 2021-05-13
  • 2021-11-17
  • 2021-09-23
  • 2021-11-27
  • 2021-08-27
  • 2021-09-02
  • 2021-07-31
  • 2021-05-28
猜你喜欢
  • 2021-12-04
  • 2021-12-06
  • 2021-06-09
  • 2021-04-02
  • 2021-05-02
  • 2021-12-27
  • 2021-12-22
相关资源
相似解决方案