java初始化数据报

编程入门 行业动态 更新时间:2024-10-23 01:58:07

java<a href=https://www.elefans.com/category/jswz/34/1770206.html style=初始化数据报"/>

java初始化数据报

我正在使用AbstractRoutingDatasource在运行时在数据库之间进行路由.在informix数据库的实际情况下一切正常.

对于测试,我创建了一个弹簧配置文件,用于内存H2数据库.

运行测试配置文件后的spring应用程序后,我使用h2控制台检查了本地数据库.没有创建架构.

我尝试在recources和hibernates中使用schema.sql:

generate-ddl: true

hibernate:

ddl-auto: create-drop

冬眠投掷

java.lang.IllegalStateException: Cannot determine target DataSource for lookup key [null]

据我所知,hibernate试图只生成“路由”数据源.由于没有设置DatabaseContextHolder(null),因此失败.

两种方式都失败了.

有没有办法用(相同)模式初始化所有数据库?

我在下面列出了我的配置.

bootstrap.yml:

spring:

profiles: acceptanceTest

config:

name: standalone

cloud:

config:

enabled: false

discovery:

enabled: false

jpa:

database-platform: org.hibernate.dialect.H2Dialect

generate-ddl: true

hibernate:

ddl-auto: create-drop

properties:

hibernate:

show_sql: false

use_sql_comments: false

format_sql: false

h2:

console:

enabled: true

path: /h2

datasource:

mc:

driver-class-name: 'org.h2.Driver'

url: 'jdbc:h2:mem:test-mc-db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'

username: sa

password: ''

platform: h2

initialize: true

type: com.zaxxer.hikari.HikariDataSource

hikari:

maximum-pool-size: 10

minimum-idle: 0

idle-timeout: 60000

pool-name: MarkHikariPool

cw:

driver-class-name: 'org.h2.Driver'

url: 'jdbc:h2:mem:test-cw-db'

username: sa

password: ''

type: com.zaxxer.hikari.HikariDataSource

hikari:

maximum-pool-size: 10

minimum-idle: 0

idle-timeout: 60000

pool-name: MarkHikariPool

MainApp.java:

@ComponentScan({ "de.md.mark" })

@EnableDiscoveryClient

@SpringBootApplication(

exclude =

{

DataSourceAutoConfiguration.class,

DataSourceTransactionManagerAutoConfiguration.class,

HibernateJpaAutoConfiguration.class

}

)

public class MainApp

{

public static void main(String[] args)

{

DataSourceConfiguration.java:

@Configuration

@EnableJpaRepositories(

basePackageClasses = { MarkTypeRepository.class, MarkRepository.class }, entityManagerFactoryRef = "markEntityManager",

transactionManagerRef = "markTransactionManager"

)

@EnableTransactionManagement

public class DataSourceConfiguration

{

@Autowired(required = false)

private PersistenceUnitManager persistenceUnitManager;

@Bean

@ConfigurationProperties("app.jpa")

@Primary

public JpaProperties jpaProperties()

{

return new JpaProperties();

}

@Bean

@ConfigurationProperties(prefix = "datasource.mc")

public DataSource mcDataSource()

{

return DataSourceBuilder.create().build();

}

@Bean

@ConfigurationProperties(prefix = "datasource.cw")

public DataSource cwDataSource()

{

return DataSourceBuilder.create().build();

}

@Bean

@Primary

public DataSource dataSource()

{

DataSourceRouter router = new DataSourceRouter();

final HashMap map = new HashMap<>(DatabaseEnvironment.values().length);

map.put(DatabaseEnvironment.MC, mcDataSource());

map.put(DatabaseEnvironment.CW, cwDataSource());

router.setTargetDataSources(map);

return router;

}

@Bean

@Primary

public LocalContainerEntityManagerFactoryBean markEntityManager(final JpaProperties jpaProperties)

{

EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(jpaProperties);

return builder.dataSource(dataSource()).packages(MarkTypeEntity.class).persistenceUnit("markEntityManager").build();

}

@Bean

@Primary

public JpaTransactionManager markTransactionManager(@Qualifier("markEntityManager") final EntityManagerFactory factory)

{

return new JpaTransactionManager(factory);

}

private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties jpaProperties)

{

JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(jpaProperties);

return new EntityManagerFactoryBuilder(jpaVendorAdapter, jpaProperties.getProperties(), this.persistenceUnitManager);

}

private JpaVendorAdapter createJpaVendorAdapter(JpaProperties jpaProperties)

{

AbstractJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();

adapter.setShowSql(jpaProperties.isShowSql());

adapter.setDatabase(jpaProperties.getDatabase());

adapter.setDatabasePlatform(jpaProperties.getDatabasePlatform());

adapter.setGenerateDdl(jpaProperties.isGenerateDdl());

return adapter;

}

}

更多推荐

java初始化数据报

本文发布于:2024-02-27 00:16:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704518.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:初始化   数据   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!