我在Spring Boot应用程序中尝试使用辅助数据源时遇到了一些困难。
在我的应用程序类中,我定义了两个数据源:
@Bean @Primary @ConfigurationProperties(prefix = "spring.datasource")
public DataSource defaultDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "db2") @ConfigurationProperties(prefix = "myapp.db2")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
以这种方式设置默认数据源,并且所有实体都与默认数据库关联,无需额外配置。当尝试使用应该与第二个数据源关联的实体时会出现问题,因为Spring认为这些实体与默认数据源一样好。
我正在尝试使用 @ Table / schema 属性,其值与应用程序类中定义的 @ Bean / name 相同,但它不起作用。我一直得到的错误是表'db1.mytable'不存在,这是错误的,因为mytable属于数据库 db2 。
以下是此类实体的简要示例:
@Data @Entity @Table(name = "mytable", schema = "db2")
public class MyTable {
@Id @Column(name = "id", nullable = false, unique = true)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "foo", nullable = false)
private String foo;
}
我错过了什么?