如何为 Spring 数据 JDBC 调整 NamingStrategy
How to tweak NamingStrategy for Spring Data JDBC
如何调整 Spring 数据 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="">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(), "");
}
};
}
在您的应用程序上下文中创建一个 NamingStrategy
类型的 bean 并根据您的喜好实现其方法。
如何调整 Spring 数据 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="">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(), "");
}
};
}
在您的应用程序上下文中创建一个 NamingStrategy
类型的 bean 并根据您的喜好实现其方法。