Jud*_*non 2 groovy jpa spring-boot
我在使用带有 spring-boot 的 JPA 时遇到问题multiple data-sources。这是我一直设法做到的事情。但这次我不明白为什么不起作用?
在 gradle build 或 bootRun 之后,不会创建或更新任何表。启动时没有编译或运行时错误。我快失去理智了。
您可以找到我所附的代码。
P2BDatabaseConfig.groovy
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "p2bEntityManagerFactory",
transactionManagerRef = "p2bTransactionManager",
basePackages = {"it.project.sol.sharpapi.repo.p2b"}
)
public class P2BDatabaseConfig {
@Bean(name = "p2bDataSource")
@ConfigurationProperties(prefix = "spring.p2b")
@Primary
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@PersistenceContext(unitName = "p2bPU")
@Bean(name = "p2bEntityManagerFactory")
@Primary
public LocalContainerEntityManagerFactoryBean p2bEntityManagerFactory(EntityManagerFactoryBuilder builder,
@Qualifier("p2bDataSource") DataSource dataSource) {
return builder.dataSource(dataSource).packages("it.project.sol.sharpapi.entity.p2b").build();
}
@Bean(name = "p2bTransactionManager")
@Primary
public PlatformTransactionManager p2bTransactionManager(
@Qualifier("p2bEntityManagerFactory") EntityManagerFactory p2bEntityManagerFactory) {
return new JpaTransactionManager(p2bEntityManagerFactory);
}
}
Run Code Online (Sandbox Code Playgroud)
SharpDatabaseConfig.groovy
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "sharpEntityManagerFactory",
transactionManagerRef = "sharpTransactionManager",
basePackages = {"it.project.sol.sharpapi.repo.sharp"}
)
public class SharpDatabaseConfig {
@Bean(name = "sharpDataSource")
@ConfigurationProperties(prefix = "spring.sharp")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@PersistenceContext(unitName = "sharpPU")
@Bean(name = "sharpEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean sharpEntityManagerFactory(EntityManagerFactoryBuilder builder,
@Qualifier("sharpDataSource") DataSource dataSource) {
return builder.dataSource(dataSource).packages("it.project.sol.sharpapi.entity.sharp").build();
}
@Bean(name = "sharpTransactionManager")
public PlatformTransactionManager sharpTransactionManager(
@Qualifier("sharpEntityManagerFactory") EntityManagerFactory sharpEntityManagerFactory) {
return new JpaTransactionManager(sharpEntityManagerFactory);
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序.yml
spring:
profiles:
active: Developement
jpa:
show-sql: true
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
hibernate:
ddl-auto: update
naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
dialect: org.hibernate.dialect.MySQL5Dialect
p2b:
url: jdbc:mysql://localhost:3306/p2bv2?autoReconnect=true
username: xxxx
password: xxxx!
testWhileIdle: true
maxActive: 5
validationQuery: SELECT 1
driver-class-name: com.mysql.jdbc.Driver
sharp:
url: jdbc:mysql://localhost:3306/sharp?autoReconnect=true
username: xxxx
password: xxxx!
testWhileIdle: true
maxActive: 5
validationQuery: SELECT 1
driver-class-name: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
P2BDevice.groovy
@Entity(name = "P2BDevice")
@Table(name = "device")
class P2BDevice implements Serializable{
@Id
@GeneratedValue
Long id
@Column(name = "version")
Long version
@Column(name = "date_created")
Date dateCreated
@Column(name = "deleted")
int deleted
@Column(name = "description")
String description
...
}
Run Code Online (Sandbox Code Playgroud)
用户.groovy
@Entity(name = "User")
@Table(name = "caccapupu")
class User implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id
@Column(name = "version")
Long version
@Column(name = "username")
String username
@Column(name = "password")
Long password
@Column(name = "date_created")
Date dateCreated
@Column(name = "status")
int status
...
}
Run Code Online (Sandbox Code Playgroud)
我可以向您保证,存储库是正确的,甚至我的课程的包位置也是正确的。
小智 5
尝试显式设置 JPA 属性
LocalContainerEntityManagerFactoryBean em =
builder.dataSource(dataSource).packages("it.project.sol.sharpapi.entity.sharp").build();
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.hbm2ddl.auto", "update");
properties.put("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
em.setJpaPropertyMap(properties);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1719 次 |
| 最近记录: |