简体   繁体   中英

how to generate table to shema automatically from entity in spring boot

I have an Spring boot application with one entity. 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.

Configuration 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:

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. But know I want to generate the table directly from my entity class.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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