在我的项目中,我使用spring-data-jdbc version2.0.4.RELEASE,我遇到了如何为表指定模式的问题。实体类如下所示
@Data
@Table(value = "alpha.op_organization")
public class OrganizationEntity {
@Id
private Long id;
@Column(name="name")
private String name;
}如果我尝试用jdbc仓库方法save保存实体,如下所示
OrganizationEntity organization = new OrganizationEntity();
organization.setName("OrgName1");
organizationRepository.save(organisation)我得到异常“发布alpha.op_organization不存在,对应的sql查询为
INSERT INTO "alpha.op_organization" ("name") VALUES (?)也就是说,我们试图在模式alpha的表"alpha.op_organization“中而不是在表op_organization中插入一个条目。
我试着定制NamingStrategy以返回模式alpha,但没有成功。
@Configuration
public class AppConfig extends AbstractJdbcConfiguration {
@Bean
public NamingStrategy namingStrategy() {
return new NamingStrategy() {
@Override
public String getSchema() {
return "alpha";
}
};
}
}有没有办法在spring-data-jdbc中指定表模式?
发布于 2020-11-02 16:46:53
目前,实现此目的的方法是定义一个NamingStrategy。来自this integration测试的示例:
@Bean
NamingStrategy namingStrategy() {
return new NamingStrategy() {
@Override
public String getSchema() {
return "other";
}
};
}发布于 2021-10-20 21:48:22
如果您正在使用
import org.springframework.data.relational.core.mapping.Table;Spring尝试构建查询
插入到"alpha.op_organization“(”名称“)值(?)
但我们需要
插入到"alpha"."op_organization“(”名称“)值(?)
尝试:
@Table(value = "alpha\".\"op_organization")发布于 2021-02-25 00:18:07
我使用postgresql + HikariDataSource。所以在我的例子中:
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
...
if(schema != null && !schema.isEmpty()){
hikariConfig.setConnectionInitSql("SET SEARCH_PATH TO " + schema);
}
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource;
}和实体,如下所示:@Table("user")正确映射到service.user
https://stackoverflow.com/questions/64629463
复制相似问题