【问题标题】:How to tweak NamingStrategy for Spring Data JDBC如何调整 Spring Data JDBC 的 NamingStrategy
【发布时间】:2018-11-16 09:14:02
【问题描述】:

如何调整 Spring Data JDBC NamingStrategy 使其表现得像 Hibernate 的 PhysicalNamingStrategy
我有以下实体:

/**
 * Campus domain model class.
 * Handles information about campus.
 *
 * @author thomas.lang@th-deg.de
 */
@Data
@AllArgsConstructor(access = AccessLevel.PRIVATE, onConstructor = @__(@PersistenceConstructor))
public class Campus {

    private final @Id
    @Wither
    long campusId;

    @NotNull
    @Size(min = 3)
    private String campusName;

    /**
     * Creates a new campus.
     *
     * @param campusName
     */
    public Campus(@NonNull String campusName) {
        this.campusId = 0;
        Assert.hasLength(campusName, "A valid value has to be provided for Campus!");
        this.campusName = campusName;
    }

}

当我想让 JDBC 持久化测试记录时,它会生成这个 sql:
[INSERT INTO campus (campus_name) VALUES (?)]

我现有的数据库有一个名为campusname的列

我已经阅读了 https://docs.spring.io/spring-data/jdbc/docs/1.0.2.RELEASE/reference/html/#jdbc.entity-persistence.naming-strategy 的文档,我可以调整命名策略,但我不知道如何 :)

感谢您的帮助! 亲切的问候! 托马斯

解决方案:

/**
     * Naming strategy for naming entity columns
     * @see <a href="https://stackoverflow.com/questions/53334685/how-to-tweak-namingstrategy-for-spring-data-jdbc/53335830#53335830">How to implement {@link NamingStrategy}</a>
     *
     * @return PhysicalNamingStrategy
     */
    @Bean
    public NamingStrategy namingStrategy() {
        return new NamingStrategy() {
            @Override
            public String getColumnName(RelationalPersistentProperty property) {
                Assert.notNull(property, "Property must not be null.");
                return ParsingUtils.reconcatenateCamelCase(property.getName(), "");
            }
        };
    }

【问题讨论】:

    标签: spring-data spring-data-jdbc


    【解决方案1】:

    在您的应用程序上下文中创建一个 NamingStrategy 类型的 bean,并根据您的喜好实现其方法。

    你需要重写的方法是getColumnName(RelationalPersistentProperty)

    【讨论】:

    • 谢谢詹斯。你的提示很有帮助。我最终得到了上面的Bean。仅作记录-请参阅上面有关问题​​的解决方案...
    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2022-10-21
    相关资源
    最近更新 更多