当前位置: 首页 > 知识库问答 >
问题:

为什么在运行spring和Hibernate项目时没有创建数据库或表

糜征
2023-03-14

当我运行我的项目时,它成功地运行了,但没有创建表。我做错的地方

package com.quickstart.com.springmvc.config;

import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate4.HibernateTransactionManager;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.quickstart.com.springmvc.config" })
@PropertySource(value = { "classpath:application.properties" })
public class HibernateConfigration {

    @Autowired
    private Environment environment;

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
        sessionFactory.setPackagesToScan(new String[] { "com.quickstart.com.springmvc.model" });
        sessionFactory.setHibernateProperties(hibernateProperties());
        return sessionFactory;
    }

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
        dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
        System.out.println(environment.getRequiredProperty("jdbc.username"));
        return dataSource;
    }

    private Properties hibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
        properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
        properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
        return properties;
    }

    @Bean
    @Autowired
    public HibernateTransactionManager transactionManager(SessionFactory s) {
        HibernateTransactionManager txManager = new HibernateTransactionManager();
        txManager.setSessionFactory(s);
        return txManager;
    }
}
package com.quickstart.com.springmvc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@ComponentScan(basePackages="com.quickstart.com.springmvc")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{

    @Bean
    public ViewResolver getViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


}
package com.quickstart.com.springmvc.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.stereotype.Service;

@Service
@Entity
@Table(name="user")
public class User {
    @Id
    @Column(name="user_id")
    private int id;

    @Column(name="Name")
    private String name;
    @Column(name="Email")
    private String email;
    @Column(name="Age")
    private int age;
    @Column(name="Password")
    private String password;
    @Column(name="Contact")
    private String contact;
    @Column(name="User_Name")
    private String username;

    User(){

    }


    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    User(String name){
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

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

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public String getUsername() {
        return username;
    }

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



}

我的属性文件

jdbc.driverclassname=com.mysql.jdbc.driver jdbc.url=jdbc:mysql://localhost:3306/hibernateTestdb jdbc.username=root jdbc.password=root hibernate.dialc=org.hibernate.dialt.mysqldialehibernate.show_sql=truehibernate.format_sql=true

共有1个答案

费朗
2023-03-14

在hibernate配置属性文件中添加属性

hibernate.hbm2ddl.auto  = create

其他可用的值是“update”“create-drop”“validate”等请参见“表3.7.杂项属性”https://docs.jboss.org/hibernate/orm/5.0/manual/en-us/html/ch03.html

 类似资料:
  • 问题内容: 我有以下hibernate.cfg.xml: 我尝试了另一种方言(),但结果却很旧 pom.xml: 当调用以下代码行时: 我看到以下堆栈跟踪: 这个问题的原因是什么? 如何解决? 聚苯乙烯 数据库架构在MySql中不存在! 如果我明确添加数据库shema-一切正常。 从Java应用程序创建架构的方法在哪里? 问题答案: 我通常在使用Spring时使用属性文件自动创建数据库,以下是它的

  • 问题内容: 我正在使用Hibernate租约,并且每次用户登录时,我都将数据库更改为其用户名(SQLite)。可悲的是,有时数据库不存在,我需要创建它。 问题是我不知道如何在运行时在数据库中创建所有表。 通常,Hibernete为此创建数据库: 问题答案: 创建数据库之后,可以为此使用SchemaExport导出要在新创建的数据库中创建的实体。基本步骤如下。如何获取配置的属性并不重要。 Javad

  • 我正在使用Spring框架配置一个简单的JPA应用程序。我的目标是在JUnit测试运行期间用数据填充db。我明白这并不理想。但我想要它有不同的用途。 下面是我的 test-context.xml

  • 问题内容: 对于一个宠物项目,数据库进入了顶峰, 元数据 达到了顶峰,我很难理解该命令与MySQL命令之间的区别(如果有)。 有什么区别吗?如果不是这样,这是关系数据库行为的一种相当典型的模式(我听说过,对于其他数据库(例如Oracle),模式存在于数据库中,而不是与数据库处于同一级别)。 谢谢! 问题答案: MySQL的文档说: CREATE DATABASE创建具有给定名称的数据库。要使用此语

  • 我有一个码头工人。编写文件,当我启动它时,我希望它创建一个包含一些表的数据库。 我的码头工人组成: 项目结构: 实际的 SQL 文件: -- 主机:本地主机 数据库:待办事项 --服务器版本8.0.18 /*!40101 SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT /; /! 40101 SET@OLD_CHARACTER_SET_RES