为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 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 关注
  • 358 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信