gpt4 book ai didi

java - 在 Spring Boot 中使用 EntityManager

转载 作者:行者123 更新时间:2023-11-30 06:05:38 25 4
gpt4 key购买 nike

我想在 SpringBoot 中使用 EntityManager

申请

@Configuration
@EnableRetry // To enable Spring retry
@EnableJpaRepositories
@EnableAspectJAutoProxy(proxyTargetClass=true)
@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

邮件配置

@Configuration
@EnableJpaRepositories(
entityManagerFactoryRef = "mailEntityManager",
transactionManagerRef = "mailTransactionManager",
basePackageClasses = MmcMonitoringLog.class)

public class MailConfig {

@Autowired(required = false)
private PersistenceUnitManager persistenceUnitManager;

@Bean
@ConfigurationProperties("app.order.jpa")
public JpaProperties orderJpaProperties() {
return new JpaProperties();
}

@Bean
@ConfigurationProperties(prefix = "app.order.datasource")
public DataSource orderDataSource() {
return (DataSource) DataSourceBuilder.create().type(DataSource.class).build();
}

@Bean
public LocalContainerEntityManagerFactoryBean orderEntityManager(
JpaProperties orderJpaProperties) {
EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(orderJpaProperties);
return builder
.dataSource(orderDataSource())
.packages(MmcMonitoringLog.class)
.persistenceUnit("ordersDs")
.build();
}

@Bean
public JpaTransactionManager orderTransactionManager(EntityManagerFactory orderEntityManager) {
return new JpaTransactionManager(orderEntityManager);
}

private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties customerJpaProperties) {
JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(customerJpaProperties);
return new EntityManagerFactoryBuilder(jpaVendorAdapter,
customerJpaProperties.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;
}

}

邮件服务

public class MailService extends TaskAdaptor implements Runnable {

@Autowired
MmcMonitoringLogRepository mmcMonitoringLogRepository;

@Override
public void run() {

List<MmcMonitoringLog> list = mmcMonitoringLogRepository.findByMonitoringLog("1");
......
}

应用程序属性

spring.datasource.url= jdbc:mysql://xxxx:3306/adb?autoReconnect=true&useSSL=false
spring.datasource.username=xxx
spring.datasource.password=xxx


# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = none

我尝试执行以下 https://github.com/snicoll-demos/demo-multi-entity-managers/blob/master/src/main/java/demo/order/OrderConfig.java ,但我的 SpringBoot 立即停止,没有抛出任何异常。如果我删除 MailConfig,Springboot 可以启动。有什么问题 ?我走在正确的道路上吗?

最佳答案

我想你还没有设置数据源的值。您需要在 application.properties 中设置“app.order.jpa”和“app.order.datasource”属性才能使示例正常运行。

关于配置属性,您可以在这里阅读:

http://www.baeldung.com/configuration-properties-in-spring-boot

看这里的例子:

https://github.com/snicoll-demos/demo-multi-entity-managers/blob/master/src/main/resources/application.properties

app.customer.datasource.url=jdbc:h2:mem:customers;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
app.customer.datasource.driver-class-name=org.h2.Driver
app.customer.jpa.properties.hibernate.hbm2ddl.auto=create

app.order.datasource.url=jdbc:h2:mem:orders;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
app.order.datasource.driver-class-name=org.h2.Driver
app.order.jpa.properties.hibernate.hbm2ddl.auto=create

关于java - 在 Spring Boot 中使用 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com