From d159654fc6954aaa91ea2348a67574788f158b97 Mon Sep 17 00:00:00 2001 From: songyinyin Date: Sun, 19 Jul 2020 15:06:37 +0800 Subject: [PATCH 1/2] [Feature] add table prefix --- .../persistence/config/CoreJpaConfig.java | 46 ++++++- .../PowerJobPhysicalNamingStrategy.java | 113 ++++++++++++++++++ .../persistence/core/model/AppInfoDO.java | 2 +- .../core/model/ContainerInfoDO.java | 2 +- .../core/model/InstanceInfoDO.java | 2 +- .../persistence/core/model/JobInfoDO.java | 2 +- .../persistence/core/model/OmsLockDO.java | 2 +- .../persistence/core/model/ServerInfoDO.java | 2 +- .../persistence/core/model/UserInfoDO.java | 2 +- .../core/model/WorkflowInfoDO.java | 2 +- .../core/model/WorkflowInstanceInfoDO.java | 2 +- .../repository/InstanceInfoRepository.java | 10 +- .../core/repository/JobInfoRepository.java | 2 +- .../core/repository/OmsLockRepository.java | 2 +- .../WorkflowInstanceInfoRepository.java | 2 +- .../src/main/resources/application.properties | 4 +- .../powerjob/server/test/RepositoryTest.java | 4 + .../src/test/resources/application.properties | 4 +- 18 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/CoreJpaConfig.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/CoreJpaConfig.java index 6e11c2a4..4919932f 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/CoreJpaConfig.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/CoreJpaConfig.java @@ -1,6 +1,9 @@ package com.github.kfcfans.powerjob.server.persistence.config; +import org.hibernate.boot.model.naming.ImplicitNamingStrategy; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties; +import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer; import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings; import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; @@ -15,6 +18,8 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.annotation.Resource; import javax.sql.DataSource; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -39,6 +44,9 @@ public class CoreJpaConfig { @Resource(name = "omsCoreDatasource") private DataSource omsCoreDatasource; + @Resource + private PowerJobPhysicalNamingStrategy powerJobPhysicalNamingStrategy; + public static final String CORE_PACKAGES = "com.github.kfcfans.powerjob.server.persistence.core"; /** @@ -49,7 +57,7 @@ public class CoreJpaConfig { * * @return 配置Map */ - private static Map genDatasourceProperties() { + private Map genDatasourceProperties() { JpaProperties jpaProperties = new JpaProperties(); jpaProperties.setOpenInView(false); @@ -57,7 +65,14 @@ public class CoreJpaConfig { HibernateProperties hibernateProperties = new HibernateProperties(); hibernateProperties.setDdlAuto("update"); - return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings()); + + // 配置JPA自定义表名称策略 + HibernateSettings hibernateSettings = new HibernateSettings(); + List customizers = new ArrayList<>(); + customizers.add( + new NamingStrategiesHibernatePropertiesCustomizer(powerJobPhysicalNamingStrategy, null)); + hibernateSettings.hibernatePropertiesCustomizers(customizers); + return hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(), hibernateSettings); } @Primary @@ -79,4 +94,31 @@ public class CoreJpaConfig { return new JpaTransactionManager(Objects.requireNonNull(initCoreEntityManagerFactory(builder).getObject())); } + + /** + * 参考 HibernateJpaConfiguration.NamingStrategiesHibernatePropertiesCustomizer + */ + private static class NamingStrategiesHibernatePropertiesCustomizer implements HibernatePropertiesCustomizer { + + private final PhysicalNamingStrategy physicalNamingStrategy; + + private final ImplicitNamingStrategy implicitNamingStrategy; + + NamingStrategiesHibernatePropertiesCustomizer(PhysicalNamingStrategy physicalNamingStrategy, + ImplicitNamingStrategy implicitNamingStrategy) { + this.physicalNamingStrategy = physicalNamingStrategy; + this.implicitNamingStrategy = implicitNamingStrategy; + } + + @Override + public void customize(Map hibernateProperties) { + if (this.physicalNamingStrategy != null) { + hibernateProperties.put("hibernate.physical_naming_strategy", this.physicalNamingStrategy); + } + if (this.implicitNamingStrategy != null) { + hibernateProperties.put("hibernate.implicit_naming_strategy", this.implicitNamingStrategy); + } + } + + } } diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java new file mode 100644 index 00000000..8e109693 --- /dev/null +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java @@ -0,0 +1,113 @@ +package com.github.kfcfans.powerjob.server.persistence.config; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import java.io.Serializable; +import java.util.Locale; + +/** + * 自定义表前缀,配置项 oms.table-prefix 不配置时,不增加表前缀。 + * 参考实现:{@link org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy} + *

+ * 1. 继承 PhysicalNamingStrategy 类,实现自定义表前缀; + *

+ *

+ * 2. 修改@Query(nativeQuery = true)和其SQL,用对象名和属性名代替表名和数据库字段名。 + *

+ * + * @author songyinyin + * @date 2020/7/18 下午 11:01 + * @since 3.1.4 + */ +@Component +public class PowerJobPhysicalNamingStrategy implements PhysicalNamingStrategy, Serializable { + + @Value("${oms.table-prefix:}") + private String tablePrefix; + + @Override + public Identifier toPhysicalCatalogName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalSchemaName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + /** + * 映射物理表名称,如:把实体表 AppInfoDO 的 DO 去掉,再加上表前缀 + * + * @param name 实体名称 + * @param jdbcEnvironment jdbc环境变量 + * @return 映射后的物理表 + */ + @Override + public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment jdbcEnvironment) { + Identifier identifier = apply(name, jdbcEnvironment); + + String text = identifier.getText(); + String noDOText = StringUtils.endsWithIgnoreCase(text, "do") ? text.substring(0, text.length() - 2) : text; + String newText = StringUtils.hasLength(tablePrefix) ? tablePrefix + noDOText : noDOText; + return new Identifier(newText, identifier.isQuoted()); + } + + @Override + public Identifier toPhysicalSequenceName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + @Override + public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) { + return apply(name, jdbcEnvironment); + } + + private Identifier apply(Identifier name, JdbcEnvironment jdbcEnvironment) { + if (name == null) { + return null; + } + StringBuilder builder = new StringBuilder(name.getText().replace('.', '_')); + for (int i = 1; i < builder.length() - 1; i++) { + if (isUnderscoreRequired(builder.charAt(i - 1), builder.charAt(i), builder.charAt(i + 1))) { + builder.insert(i++, '_'); + } + } + return getIdentifier(builder.toString(), name.isQuoted(), jdbcEnvironment); + } + + /** + * Get an identifier for the specified details. By default this method will return an + * identifier with the name adapted based on the result of + * {@link #isCaseInsensitive(JdbcEnvironment)} + * + * @param name the name of the identifier + * @param quoted if the identifier is quoted + * @param jdbcEnvironment the JDBC environment + * @return an identifier instance + */ + protected Identifier getIdentifier(String name, boolean quoted, JdbcEnvironment jdbcEnvironment) { + if (isCaseInsensitive(jdbcEnvironment)) { + name = name.toLowerCase(Locale.ROOT); + } + return new Identifier(name, quoted); + } + + /** + * Specify whether the database is case sensitive. + * + * @param jdbcEnvironment the JDBC environment which can be used to determine case + * @return true if the database is case insensitive sensitivity + */ + protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) { + return true; + } + + private boolean isUnderscoreRequired(char before, char current, char after) { + return Character.isLowerCase(before) && Character.isUpperCase(current) && Character.isLowerCase(after); + } +} diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/AppInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/AppInfoDO.java index d018b36e..650c63e7 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/AppInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/AppInfoDO.java @@ -13,7 +13,7 @@ import java.util.Date; */ @Data @Entity -@Table(name = "app_info", uniqueConstraints = {@UniqueConstraint(name = "appNameUK", columnNames = {"appName"})}) +@Table(uniqueConstraints = {@UniqueConstraint(name = "appNameUK", columnNames = {"appName"})}) public class AppInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ContainerInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ContainerInfoDO.java index 3424a4a6..6e46e094 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ContainerInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ContainerInfoDO.java @@ -13,7 +13,7 @@ import java.util.Date; */ @Data @Entity -@Table(name = "container_info", indexes = {@Index(columnList = "appId")}) +@Table(indexes = {@Index(columnList = "appId")}) public class ContainerInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/InstanceInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/InstanceInfoDO.java index f06a4e50..92c83797 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/InstanceInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/InstanceInfoDO.java @@ -18,7 +18,7 @@ import java.util.Date; @Entity @NoArgsConstructor @AllArgsConstructor -@Table(name = "instance_info", indexes = {@Index(columnList = "jobId"), @Index(columnList = "appId"), @Index(columnList = "instanceId")}) +@Table(indexes = {@Index(columnList = "jobId"), @Index(columnList = "appId"), @Index(columnList = "instanceId")}) public class InstanceInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/JobInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/JobInfoDO.java index 5d214cf6..7b9ed512 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/JobInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/JobInfoDO.java @@ -18,7 +18,7 @@ import java.util.Date; @Entity @NoArgsConstructor @AllArgsConstructor -@Table(name = "job_info", indexes = {@Index(columnList = "appId")}) +@Table(indexes = {@Index(columnList = "appId")}) public class JobInfoDO { diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/OmsLockDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/OmsLockDO.java index 03a1f6b7..95949f50 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/OmsLockDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/OmsLockDO.java @@ -15,7 +15,7 @@ import java.util.Date; @Data @Entity @NoArgsConstructor -@Table(name = "oms_lock", uniqueConstraints = {@UniqueConstraint(name = "lockNameUK", columnNames = {"lockName"})}) +@Table(uniqueConstraints = {@UniqueConstraint(name = "lockNameUK", columnNames = {"lockName"})}) public class OmsLockDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ServerInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ServerInfoDO.java index be61cb34..3a6882d4 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ServerInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/ServerInfoDO.java @@ -15,7 +15,7 @@ import java.util.Date; @Data @Entity @NoArgsConstructor -@Table(name = "server_info", uniqueConstraints = {@UniqueConstraint(columnNames = "ip")}) +@Table(uniqueConstraints = {@UniqueConstraint(columnNames = "ip")}) public class ServerInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/UserInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/UserInfoDO.java index 883a223f..bed8a473 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/UserInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/UserInfoDO.java @@ -13,7 +13,7 @@ import java.util.Date; */ @Data @Entity -@Table(name = "user_info") +@Table public class UserInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInfoDO.java index 606efad7..f87f2f99 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInfoDO.java @@ -17,7 +17,7 @@ import java.util.Date; @Entity @NoArgsConstructor @AllArgsConstructor -@Table(name = "workflow_info", indexes = {@Index(columnList = "appId")}) +@Table(indexes = {@Index(columnList = "appId")}) public class WorkflowInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInstanceInfoDO.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInstanceInfoDO.java index fca69561..ff9d5651 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInstanceInfoDO.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/model/WorkflowInstanceInfoDO.java @@ -17,7 +17,7 @@ import java.util.Date; @Entity @NoArgsConstructor @AllArgsConstructor -@Table(name = "workflow_instance_info") +@Table public class WorkflowInstanceInfoDO { @Id diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/InstanceInfoRepository.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/InstanceInfoRepository.java index e5ef8513..a71f2114 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/InstanceInfoRepository.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/InstanceInfoRepository.java @@ -37,19 +37,19 @@ public interface InstanceInfoRepository extends JpaRepository findByJobIdInAndStatusIn(List jobIds, List status); // 删除历史数据,JPA自带的删除居然是根据ID循环删,2000条数据删了几秒,也太拉垮了吧... // 结果只能用 int 接收 @Modifying @Transactional - @Query(value = "delete from instance_info where gmt_modified < ?1", nativeQuery = true) + @Query(value = "delete from InstanceInfoDO where gmtModified < ?1") int deleteAllByGmtModifiedBefore(Date time); } diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/JobInfoRepository.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/JobInfoRepository.java index 3dbd2254..1e033282 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/JobInfoRepository.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/JobInfoRepository.java @@ -20,7 +20,7 @@ public interface JobInfoRepository extends JpaRepository { // 调度专用 List findByAppIdInAndStatusAndTimeExpressionTypeAndNextTriggerTimeLessThanEqual(List appIds, int status, int timeExpressionType, long time); - @Query(value = "select id from job_info where app_id in ?1 and status = ?2 and time_expression_type in ?3", nativeQuery = true) + @Query(value = "select id from JobInfoDO where appId in ?1 and status = ?2 and timeExpressionType in ?3") List findByAppIdInAndStatusAndTimeExpressionTypeIn(List appIds, int status, List timeTypes); Page findByAppIdAndStatusNot(Long appId, int status, Pageable pageable); diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/OmsLockRepository.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/OmsLockRepository.java index 1a2ce112..3f247323 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/OmsLockRepository.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/OmsLockRepository.java @@ -17,7 +17,7 @@ public interface OmsLockRepository extends JpaRepository { @Modifying @Transactional - @Query(value = "delete from oms_lock where lock_name = ?1", nativeQuery = true) + @Query(value = "delete from OmsLockDO where lockName = ?1") int deleteByLockName(String lockName); OmsLockDO findByLockName(String lockName); diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/WorkflowInstanceInfoRepository.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/WorkflowInstanceInfoRepository.java index 04910339..809bfdfc 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/WorkflowInstanceInfoRepository.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/core/repository/WorkflowInstanceInfoRepository.java @@ -24,7 +24,7 @@ public interface WorkflowInstanceInfoRepository extends JpaRepository status); diff --git a/powerjob-server/src/main/resources/application.properties b/powerjob-server/src/main/resources/application.properties index b068bee6..7f451caf 100644 --- a/powerjob-server/src/main/resources/application.properties +++ b/powerjob-server/src/main/resources/application.properties @@ -15,4 +15,6 @@ spring.servlet.multipart.max-request-size=209715200 # akka ActorSystem 服务端口 oms.akka.port=10086 # 报警服务 bean名称 -oms.alarm.bean.names=omsDefaultMailAlarmService \ No newline at end of file +oms.alarm.bean.names=omsDefaultMailAlarmService +# 表前缀 +#oms.table-prefix=pj_ \ No newline at end of file diff --git a/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/RepositoryTest.java b/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/RepositoryTest.java index d44986d8..48c918f2 100644 --- a/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/RepositoryTest.java +++ b/powerjob-server/src/test/java/com/github/kfcfans/powerjob/server/test/RepositoryTest.java @@ -14,6 +14,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Date; @@ -41,6 +42,7 @@ public class RepositoryTest { * 需要证明批量写入失败后会回滚 */ @Test + @Transactional public void testBatchLock() { List locks = Lists.newArrayList(); @@ -59,6 +61,7 @@ public class RepositoryTest { } @Test + @Transactional public void testUpdate() { InstanceInfoDO updateEntity = new InstanceInfoDO(); updateEntity.setId(22L); @@ -68,6 +71,7 @@ public class RepositoryTest { } @Test + @Transactional public void testExecuteLogUpdate() { instanceInfoRepository.update4TriggerFailed(1586310414570L, 2, 100, System.currentTimeMillis(), System.currentTimeMillis(), "192.168.1.1", "NULL", "", new Date()); instanceInfoRepository.update4FrequentJob(1586310419650L, 2, 200, new Date()); diff --git a/powerjob-server/src/test/resources/application.properties b/powerjob-server/src/test/resources/application.properties index 6047d1a7..4cbbeca3 100644 --- a/powerjob-server/src/test/resources/application.properties +++ b/powerjob-server/src/test/resources/application.properties @@ -33,4 +33,6 @@ oms.log.retention.local=0 oms.log.retention.remote=0 oms.container.retention.local=0 oms.container.retention.remote=0 -oms.instanceinfo.retention=0; \ No newline at end of file +oms.instanceinfo.retention=0; +# 表前缀 +#oms.table-prefix=pj_ \ No newline at end of file From a81a9fb168cd4c5f385445b9b4b512601d49df86 Mon Sep 17 00:00:00 2001 From: songyinyin Date: Sun, 19 Jul 2020 20:32:18 +0800 Subject: [PATCH 2/2] since 3.2.0 --- .../persistence/config/PowerJobPhysicalNamingStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java index 8e109693..4f32b974 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/persistence/config/PowerJobPhysicalNamingStrategy.java @@ -22,7 +22,7 @@ import java.util.Locale; * * @author songyinyin * @date 2020/7/18 下午 11:01 - * @since 3.1.4 + * @since 3.2.0 */ @Component public class PowerJobPhysicalNamingStrategy implements PhysicalNamingStrategy, Serializable {