简体   繁体   English

如何从 spring 启动中的实体自动生成表到 shema

[英]how to generate table to shema automatically from entity in spring boot

I have an Spring boot application with one entity.我有一个带有一个实体的 Spring 启动应用程序。 I generated an mysql schema and now I am trying to generate a table inside this when my spring boot application is starting I tried this with doing custom configuration classes but it doesnt generate any tables.我生成了一个 mysql 模式,现在我试图在其中生成一个表,当我的 spring 启动应用程序启动时,我尝试使用自定义配置类进行此操作,但它不会生成任何表。

Configuration Class:配置 Class:

@Configuration
@PropertySource({"classpath:persistence-multiple-db.properties"})
@EnableJpaRepositories(
        basePackages = "com.cbc.coorporateblinddateservice.repositories.meetinsSetting",
        entityManagerFactoryRef = "meetingSettingEntityManager",
        transactionManagerRef = "meetingSettingTransactionManager"
)
public class MeetingSettingsConfig {

    @Autowired
    private Environment env;

    @Bean
    @Primary
    public LocalContainerEntityManagerFactoryBean meetingSettingEntityManager() {
        LocalContainerEntityManagerFactoryBean em
                = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(meetingSettingDataSource());
        em.setPackagesToScan(
                "com.cbc.coorporateblinddateservice.entities.meetinsSetting");

        HibernateJpaVendorAdapter vendorAdapter
                = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        HashMap<String, Object> properties = new HashMap<>();
        properties.put("hibernate.hbm2ddl.auto",
                env.getProperty("hibernate.hbm2ddl.auto"));
        properties.put("hibernate.dialect",
                env.getProperty("hibernate.dialect"));
        em.setJpaPropertyMap(properties);

        return em;
    }

    @Primary
    @Bean
    public DataSource meetingSettingDataSource() {

        DriverManagerDataSource dataSource
                = new DriverManagerDataSource();
        dataSource.setDriverClassName(
                env.getProperty("meetingSetting.jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("meetingSetting.jdbc.url"));
        dataSource.setUsername(env.getProperty("meetingSetting.jdbc.user"));
        dataSource.setPassword(env.getProperty("meetingSetting.jdbc.pass"));
        dataSource.setSchema("coorporate_blinddate");

        return dataSource;
    }

    @Primary
    @Bean
    public PlatformTransactionManager meetingSettingTransactionManager() {

        JpaTransactionManager transactionManager
                = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(
                meetingSettingEntityManager().getObject());
        return transactionManager;
    }


}

Entity:实体:

@Entity
@Table(name = "MeetingsSetting")
public class MeetingsSetting {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "meeting_name")
    private String meetingName;

    @Column(name = "meeting_url")
    private String meetingUrl;

    @Column(name = "meeting_pw")
    private String meetingPw;
//
//    @OneToMany(mappedBy = "meetingsSetting", cascade = CascadeType.ALL)
//    private List<Date> meetingDate = new ArrayList<>();


}

And finally my config.property:最后是我的 config.property:

meetingSetting.jdbc.driverClassName=com.mysql.jdbc.Driver

meetingSetting.jdbc.url=jdbc:mysql://localhost:3306/Coorporate_Blinddate?createDatabaseIfNotExist=true&useSSL=true&serverTimezone=UTC
meetingSetting.jdbc.user=root
meetingSetting.jdbc.pass=

I know it takes my config.property because if I enter the wrong user it gives me an error.我知道它需要我的 config.property 因为如果我输入错误的用户它会给我一个错误。 But know I want to generate the table directly from my entity class.但是知道我想直接从我的实体 class 生成表。

spring.jpa.hibernate.ddl-auto=create in application.properties file this requires Spring JPA in your project spring.jpa.hibernate.ddl-auto=create in application.properties file this requires Spring JPA in your project

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM