亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Spring Data JDBC 中將實體映射到表?

如何在 Spring Data JDBC 中將實體映射到表?

慕碼人8056858 2021-12-18 09:52:24
在 Spring Data JPA 中,我們可以通過使用@Table注釋將實體映射到特定表,我們可以在其中指定模式和名稱。但是 Spring Data JDBC 使用 aNamingStrategy通過轉換實體類名將實體映射到表名。例如,如果我們命名了實體類,MetricValue那么該表應該以metricvalue默認模式命名。但是我需要映射MetricValue到模式中的metric_value表app。有什么方法可以通過注釋或任何其他方式覆蓋此映射?
查看完整描述

3 回答

?
德瑪西亞99

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.


我創建了一個問題來改進文檔。


查看完整回答
反對 回復 2021-12-18
?
鴻蒙傳說

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";

            }

        };

    }

}


查看完整回答
反對 回復 2021-12-18
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

使用@Table(name = "metric_value").


查看完整回答
反對 回復 2021-12-18
  • 3 回答
  • 0 關注
  • 407 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號