3 回答

TA貢獻1770條經驗 獲得超3個贊
Spring Data JDBC 有它自己的@Table注解,也是一個注解@Column。
您只需將注釋添加到您的實體并將名稱指定為注釋的值。
舉一些例子:
@Table("entity")
class MyEntity {
private @Column("last_name") String name;
@Column(value = "entity_id", keyColumn = "entity_index")
private List<SomeOtherEntity> someList;
}
這將讀取和寫入MyEntity表entity而不是默認的my_entity. 該屬性name將存儲在列中last_name。并且從some_other_entityto反向引用的列entity將entity_id以外鍵列命名,通常是entity(被引用表的表名)。并且列表索引將存儲在entity_index而不是默認的entity_key.
我創建了一個問題來改進文檔。

TA貢獻1865條經驗 獲得超7個贊
命名行為由接口的默認實現定義 NamingStrategy
來自參考文檔,版本 1.0.2 的第 4.4.3 節:
當您使用 Spring Data JDBC 提供的 CrudRepository 的標準實現時,他們期望特定的表結構。您可以通過在應用程序上下文中提供 NamingStrategy 來調整它。
默認實現具有以下行為(來自 javadoc 1.0.2 版):
默認為無模式,基于類的表名和基于 RelationalPersistentProperty 的列名,兩者的名稱部分以“_”分隔。
因此,創建一個 bean,該 beanNamingStrategy在您的應用程序上下文中注冊它。
這是@keddok 評論中的一個例子:
@Configuration
@EnableJdbcRepositories
public class MetricStoreRepositoryConfig extends JdbcConfiguration {
@Autowired
private DataSource dataSource;
@Bean
NamedParameterJdbcOperations operations() {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean
NamingStrategy namingStrategy() {
return new NamingStrategy() {
@Override
public String getSchema() {
return "metric";
}
};
}
}
添加回答
舉報