春データJDBCのテーブルにエンティティをマッピングする方法?

火曜日:

春データJPAでは、使用して、特定のテーブルにエンティティをマッピングすることができ@Table、我々は、スキーマと名前を指定することができます注釈を。

しかし、春データJDBCを使用するNamingStrategyエンティティクラス名を変換することによって、テーブル名にエンティティをマッピングします。私たちは、名前のエンティティクラスを持っている場合たとえば、MetricValueその後、テーブルは名前を付ける必要がありmetricvalue、デフォルトのスキーマに。しかし、私はマップする必要がMetricValuemetric_valueしてテーブルappのスキーマ。

注釈や他のことで、このマッピングを上書きする方法はありますか?

Kartoch:

命名の振る舞いは、インターフェースのデフォルトの実装で定義されています NamingStrategy

以下からのリファレンスドキュメント、バージョン1.0.2のセクション4.4.3

あなたは春データJDBCが提供するCrudRepositoryの標準実装を使用すると、彼らは、特定のテーブル構造を期待しています。あなたは、あなたのアプリケーションのコンテキストでNamingStrategyをを提供することにより、それを微調整することができます。

デフォルトの実装では、持っている(javadocのバージョン1.0.2から)次の動作を

両方の名前部分とRelationalPersistentPropertyに基づいたクラスに基づいて、スキーマ、テーブル名と列名のデフォルトは「_」によって分離されました。

だから、実装がBeanの作成NamingStrategyでアプリケーションのコンテキストに登録します。

これは@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";
            }
        };
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=168499&siteId=1