【问题标题】:How to config a SpringMVC + Hibernate?如何配置 SpringMVC + Hibernate?
【发布时间】:2016-11-04 20:55:33
【问题描述】:

我正在尝试使用 web.xml 使用 hibernate 创建一个 springmvc 项目配置

我的问题是当我运行时,它不会自动创建用户表。

这是我的代码:

文件 spring-config.xml

<!-- Config for soap -->

<bean id="UserWs" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition" lazy-init="true">
    <property name="schemaCollection">
        <bean class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
            <property name="inline" value="true" />
            <property name="xsds">
                <list>
                    <value>schema/schema1.xsd</value>
                </list>
            </property>
        </bean>
    </property>
    <property name="portTypeName" value="UserService"/>
    <property name="serviceName" value="UserService" />
    <property name="locationUri" value="/ws"/>
</bean>

<!-- Enables the Spring MVC @Controller programming model -->
<mvc:annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<mvc:resources mapping="/resources/**" location="/resources/" />

<context:component-scan base-package="com.higgsup.internship.soap" />

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/springmvc"/>
    <property name="username" value="root"/>
    <property name="password" value=""/>
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.higgsup.internship.soap.model" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

<tx:annotation-driven />
<bean id="transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="userDao" class="com.higgsup.internship.soap.dao.UserDAOImpl"></bean>

文件 web.xml:

  <!--
    Main configuration file for this Spring web application.
-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        WEB-INF/config/spring-config.xml
    </param-value>
</context-param>
<!--
    Loads the Spring web application context, using the files defined above.
-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!--
    Define the Spring WS Servlet. The 'transformWsldLocations' param means
    that any WSDLs generated are context-aware and contain the correct
    path to their exposed port types. The 'contextConfigLocation' param
    with an empty value means that the Spring context won't try to load
    a file called webservices-servlet.xml
-->
<servlet>
    <servlet-name>services</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/config/spring-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>services</servlet-name>
    <url-pattern>/ws</url-pattern>
</servlet-mapping>

文件用户DAO:

package com.higgsup.internship.soap.dao;

import com.higgsup.internship.soap.model.User;

public interface UserDAO {

public User getUser(Integer id);
}

文件 UserDaoImpl:

package com.higgsup.internship.soap.dao;

import com.higgsup.internship.soap.model.User;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

public class UserDAOImpl implements UserDAO {

@PersistenceContext
private EntityManager entityManager;

public User getUser(Integer id) {
    User user = entityManager.find(User.class, id);
    return user;
}
}

文件使用者:

package com.higgsup.internship.soap.model;

public class User {

private int id;
private String username;
private String password;
private String email;

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

}

这是我的日志:

02-Jul-2016 23:46:57.342 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本:Apache Tomcat/9.0.0.M4 2016 年 7 月 2 日 23:46:57.343 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器建成时间:2016 年 3 月 12 日 11:39:59 UTC 2016 年 7 月 2 日 23:46:57.343 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器号:9.0.0.0 2016 年 7 月 2 日 23:46:57.343 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称:Windows 7 2016 年 7 月 2 日 23:46:57.344 信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log 操作系统版本:6.1 2016 年 7 月 2 日 23:46:57.344 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log 架构:x86 2016 年 7 月 2 日 23:46:57.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 主页:C:\Program Files (x86)\Java\jdk1.8.0_60\jre 2016 年 7 月 2 日 23:46:57.344 信息 [主] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本:1.8.0_60-b27 2016 年 7 月 2 日 23:46:57.344 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 供应商:Oracle Corporation 2016 年 7 月 2 日 23:46:57.344 信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\hunghip.IntelliJIdea15\system\tomcat\Unnamed_spring-soap-hibernate-xml_2 2016 年 7 月 2 日 23:46:57.344 信息 [主要] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\Setup\tomcat\apache-tomcat-9.0.0.M4 2016 年 7 月 2 日 23:46:57.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcom.sun.management.jmxremote= 2016 年 7 月 2 日 23:46:57.344 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcom.sun.management.jmxremote.port=1099 2016 年 7 月 2 日 23:46:57.344 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcom.sun.management.jmxremote.ssl=false 2016 年 7 月 2 日 23:46:57.344 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcom.sun.management.jmxremote.authenticate=false 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.rmi.server.hostname=127.0.0.1 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.config.file=C:\Users\hunghip.IntelliJIdea15\system \tomcat\Unnamed_spring-soap-hibernate-xml_2\conf\logging.properties 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.base=C:\Users\hunghip.IntelliJIdea15\system\tomcat\Unnamed_spring-soap -休眠-xml_2 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.home=D:\Setup\tomcat\apache-tomcat-9.0.0.M4 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.io.tmpdir=D:\Setup\tomcat\apache-tomcat-9.0.0 .M4\温度 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用 APR 版本 1.5.2 加载了基于 APR 的 Apache Tomcat 本机库 1.2.7。 2016 年 7 月 2 日 23:46:57.345 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR 功能:IPv6 [true]、sendfile [true]、接受过滤器 [false]、随机 [true]。 02-Jul-2016 23:46:58.376 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL 成功初始化(OpenSSL 1.0.2h 2016 年 5 月 3 日) 2016 年 7 月 2 日 23:46:58.606 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["http-nio-8080"] 2016 年 7 月 2 日 23:46:58.625 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2016 年 7 月 2 日 23:46:58.630 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["ajp-nio-8009"] 2016 年 7 月 2 日 23:46:58.631 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2016 年 7 月 2 日 23:46:58.632 INFO [main] org.apache.catalina.startup.Catalina.load 初始化在 2099 毫秒内处理 02-Jul-2016 23:46:58.674 INFO [main] org.apache.catalina.core.StandardService.startInternal 启动服务 Catalina 2016 年 7 月 2 日 23:46:58.674 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 启动 Servlet 引擎:Apache Tomcat/9.0.0.M4 2016 年 7 月 2 日 23:46:58.682 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler [http-nio-8080] 2016 年 7 月 2 日 23:46:58.690 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler [ajp-nio-8009] 2016 年 7 月 2 日 23:46:58.692 INFO [main] org.apache.catalina.startup.Catalina.start 服务器在 59 毫秒内启动 连接到服务器 [2016-07-02 11:46:59,006] 工件 spring-soap-hibernate-xml:war:正在部署工件,请稍候... 2016 年 7 月 2 日 23:47:02.461 INFO [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少对一个 JAR 进行了 TLD 扫描,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 2016 年 7 月 2 日 23:47:02.520 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext:初始化开始 2016 年 7 月 2 日 23:47:02.625 信息 [RMI TCP 连接(3)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh 刷新根 WebApplicationContext:启动日期 [7 月 2 日星期六 23:47: 02 信息通信技术 2016];上下文层次的根 2016 年 7 月 2 日 23:47:02.673 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions 从 ServletContext 资源加载 XML bean 定义 [/WEB-INF/config /spring-config.xml] 2016 年 7 月 2 日 23:47:03.109 信息 [RMI TCP 连接 (3)-127.0.0.1] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor。发现 JSR-330 'javax.inject.Inject' 注释并支持自动装配 2016 年 7 月 2 日 23:47:03.357 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory 为持久性单元“默认”构建 JPA 容器 EntityManagerFactory 2016 年 7 月 2 日 23:47:03.385 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.jpa.internal.util.LogHelper.logPersistenceUnitInformation HHH000204:处理 PersistenceUnitInfo [ 名称:默认 ...] 2016 年 7 月 2 日 23:47:03.507 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.Version.logVersion HHH000412: Hibernate Core {5.2.1.Final} 2016 年 7 月 2 日 23:47:03.509 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.cfg.Environment。 HHH000206: hibernate.properties 未找到 2016 年 7 月 2 日 23:47:03.511 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.cfg.Environment.buildBytecodeProvider HHH000021:字节码提供程序名称:javassist 2016 年 7 月 2 日 23:47:03.583 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.annotations.common.reflection.java.JavaReflectionManager。 HCANN000001:Hibernate Commons 注释 {5.0.1.Final} 2016 年 7 月 2 日 23:47:04.038 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.dialect.Dialect。 HHH000400:使用方言:org.hibernate.dialect.MySQLDialect 2016 年 7 月 2 日 23:47:04.484 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.tool.schema.internal.SchemaCreatorImpl.applyImportSources HHH000476:执行导入脚本 'org.hibernate.tool.schema。 internal.exec.ScriptSourceInputNonExistentImpl@93c19f' 2016 年 7 月 2 日 23:47:04.495 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.buildNativeEntityManagerFactory 为持久性单元“默认”初始化了 JPA EntityManagerFactory 2016 年 7 月 2 日 23:47:04.781 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache 寻找@ControllerAdvice: Root WebApplicationContext: 启动日期[2016 年 7 月 2 日星期六 23:47:02 ICT];上下文层次的根 2016 年 7 月 2 日 23:47:04.831 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache 寻找 @ControllerAdvice: Root WebApplicationContext: 启动日期[2016 年 7 月 2 日星期六 23:47:02 ICT];上下文层次的根 2016 年 7 月 2 日 23:47:04.906 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandler 映射 URL 路径 [/resources/] 到处理程序' org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' 2016 年 7 月 2 日 23:47:05.023 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext:初始化在 2503 毫秒内完成 2016 年 7 月 2 日 23:47:05.056 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet '服务':初始化开始 2016 年 7 月 2 日 23:47:05.059 信息 [RMI TCP 连接 (3)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh 刷新命名空间“服务-servlet”的 WebApplicationContext:启动日期 [星期六Jul 02 23:47:05 ICT 2016];父级:根 WebApplicationContext 2016 年 7 月 2 日 23:47:05.060 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions 从 ServletContext 资源加载 XML bean 定义 [/WEB-INF/config /spring-config.xml] 2016 年 7 月 2 日 23:47:05.116 信息 [RMI TCP 连接 (3)-127.0.0.1] org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor。发现 JSR-330 'javax.inject.Inject' 注释并支持自动装配 2016 年 7 月 2 日 23:47:05.144 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory 为持久性单元“默认”构建 JPA 容器 EntityManagerFactory 2016 年 7 月 2 日 23:47:05.144 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.jpa.internal.util.LogHelper.logPersistenceUnitInformation HHH000204:处理 PersistenceUnitInfo [ 名称:默认 ...] 2016 年 7 月 2 日 23:47:05.161 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.dialect.Dialect。 HHH000400:使用方言:org.hibernate.dialect.MySQLDialect 2016 年 7 月 2 日 23:47:05.170 信息 [RMI TCP 连接 (3)-127.0.0.1] org.hibernate.tool.schema.internal.SchemaCreatorImpl.applyImportSources HHH000476:执行导入脚本 'org.hibernate.tool.schema。 internal.exec.ScriptSourceInputNonExistentImpl@93c19f' 2016 年 7 月 2 日 23:47:05.174 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.buildNativeEntityManagerFactory 为持久性单元“默认”初始化了 JPA EntityManagerFactory 2016 年 7 月 2 日 23:47:05.226 信息 [RMI TCP 连接 (3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache 寻找 @ControllerAdvice: WebApplicationContext for namespace 'services -servlet':启动日期 [Sat Jul 02 23:47:05 ICT 2016];父级:根 WebApplicationContext 2016 年 7 月 2 日 23:47:05.243 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.initControllerAdviceCache 寻找 @ControllerAdvice: WebApplicationContext for namespace 'services -servlet':启动日期 [Sat Jul 02 23:47:05 ICT 2016];父级:根 WebApplicationContext 2016 年 7 月 2 日 23:47:05.289 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.handler.SimpleUrlHandlerMapping.registerHandler 映射 URL 路径 [/resources/] 到处理程序'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' 2016 年 7 月 2 日 23:47:05.380 INFO [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.DispatcherServlet.initServletBean FrameworkServlet '服务':初始化在 323 毫秒内完成 [2016-07-02 11:47:05,399] 工件 spring-soap-hibernate-xml:war:工件已成功部署 [2016-07-02 11:47:05,400] 工件 spring-soap-hibernate-xml:war:部署耗时 6,394 毫秒 2016 年 7 月 2 日 23:47:08.688 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 D:\Setup\tomcat\apache-tomcat-9.0.0.M4\网络应用程序\经理 02-Jul-2016 23:47:08.872 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 D:\Setup\tomcat\apache-tomcat-9.0.0.M4 \webapps\manager 已在 184 毫秒内完成

【问题讨论】:

  • 你能把你的代码贴在这里吗?那么我们可以在这里找出问题所在
  • Tks.我添加了我的代码
  • 你也可以添加 UserDaoImpl 吗?

标签: hibernate spring-mvc


【解决方案1】:

似乎是您没有添加 jpa 注释来建模 User 类。 你可以试试下面的模型类吗?

package com.higgsup.internship.soap.model;

@Entity
@Table(name = "tbl_user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "username")
    private String username;

    @Column(name = "password")
    private String password;

    @Column(name = "email")
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2013-07-04
    相关资源
    最近更新 更多