如何调整 Spring Data JDBC 的 NamingStrategy

Tho*_*ang 7 spring-data spring-data-jdbc

我如何调整 Spring Data JDBCNamingStrategy使其行为像 Hibernate\xc2\xb4s PhysicalNamingStrategy
\n我有以下实体:

\n\n
/**\n * Campus domain model class.\n * Handles information about campus.\n *\n * @author thomas.lang@th-deg.de\n */\n@Data\n@AllArgsConstructor(access = AccessLevel.PRIVATE, onConstructor = @__(@PersistenceConstructor))\npublic class Campus {\n\n    private final @Id\n    @Wither\n    long campusId;\n\n    @NotNull\n    @Size(min = 3)\n    private String campusName;\n\n    /**\n     * Creates a new campus.\n     *\n     * @param campusName\n     */\n    public Campus(@NonNull String campusName) {\n        this.campusId = 0;\n        Assert.hasLength(campusName, "A valid value has to be provided for Campus!");\n        this.campusName = campusName;\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我希望 JDBC 持久化测试记录时,它会生成以下 sql:
\n[INSERT INTO campus (campus_name) VALUES (?)]

\n\n

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

\n\n

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

\n\n

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

\n\n

解决方案:

\n\n
/**\n     * Naming strategy for naming entity columns\n     * @see <a href="/sf/ask/3733427981/#53335830">How to implement {@link NamingStrategy}</a>\n     *\n     * @return PhysicalNamingStrategy\n     */\n    @Bean\n    public NamingStrategy namingStrategy() {\n        return new NamingStrategy() {\n            @Override\n            public String getColumnName(RelationalPersistentProperty property) {\n                Assert.notNull(property, "Property must not be null.");\n                return ParsingUtils.reconcatenateCamelCase(property.getName(), "");\n            }\n        };\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

Jen*_*der 6

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

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