处理hibernate自动建表字段类型

This commit is contained in:
2023-08-01 16:10:54 +08:00
parent 6d3720881c
commit db05d2c1fd

View File

@@ -1,43 +1,29 @@
package cn.lihongjie.coal.config;
import org.hibernate.boot.ResourceStreamLocator;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.boot.spi.AdditionalMappingContributions;
import org.hibernate.boot.spi.AdditionalMappingContributor;
import org.hibernate.boot.spi.InFlightMetadataCollector;
import org.hibernate.boot.spi.MetadataBuildingContext;
import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.cfg.AvailableSettings;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.hibernate.type.SqlTypes;
import org.hibernate.type.descriptor.sql.internal.DdlTypeImpl;
import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
@Configuration
public class HibernateConfig {
@Bean
AdditionalMappingContributor metadataContributor() {
return new AdditionalMappingContributor() {
HibernatePropertiesCustomizer hibernatePropertiesCustomizer() {
return new HibernatePropertiesCustomizer() {
@Override
public void contribute(AdditionalMappingContributions contributions,
InFlightMetadataCollector metadata,
ResourceStreamLocator resourceStreamLocator,
MetadataBuildingContext buildingContext) {
buildingContext
.getBuildingOptions()
.getTypeConfiguration()
.getDdlTypeRegistry()
.addDescriptor(SqlTypes.VARCHAR, new DdlTypeImpl(SqlTypes.VARCHAR, "text", new PostgreSQLDialect()));
public void customize(Map<String, Object> hibernateProperties) {
hibernateProperties.put(AvailableSettings.DIALECT, "cn.lihongjie.coal.config" + ".MyPostgreSQLDialect");
}
};
}
@@ -49,9 +35,7 @@ public class HibernateConfig {
@Override
public Identifier toPhysicalTableName(Identifier logicalName, JdbcEnvironment jdbcEnvironment) {
return super.toPhysicalTableName(new Identifier("t_" + logicalName.getText().replace("Entity", ""),
logicalName.isQuoted()),
jdbcEnvironment);
return super.toPhysicalTableName(new Identifier("t_" + logicalName.getText().replace("Entity", ""), logicalName.isQuoted()), jdbcEnvironment);
}
};