package tech.powerjob.server.persistence.config.dialect;
|
|
import org.hibernate.dialect.PostgreSQL10Dialect;
|
import org.hibernate.type.descriptor.sql.LongVarcharTypeDescriptor;
|
import org.hibernate.type.descriptor.sql.SqlTypeDescriptor;
|
|
import java.sql.Types;
|
|
/**
|
* PostgreSQL 数据库支持,需要在 application.properties 中添加以下配置项进行激活
|
* spring.datasource.remote.hibernate.properties.hibernate.dialect=tech.powerjob.server.persistence.config.dialect.PowerJobPGDialect
|
*
|
* @author Kung Yao
|
* @author Echo009
|
* 2021/3/24 下午 04:23
|
* 1074_King
|
*/
|
public class PowerJobPGDialect extends PostgreSQL10Dialect {
|
|
/**
|
* 使用 {@link Types#LONGVARCHAR} 覆盖 {@link Types#CLOB} 类型
|
*
|
* 注意,如果在 PG 库创建表时使用的列类型为 oid ,那么这样会导致没法正确读取数据
|
* 在 PowerJob 中能这样用是因为 PowerJob 的所有实体类中被 @Lob 注解标记的列对应数据库中的字段类型都是 text
|
* 另外还需要注意数据库版本,如果是 10.x 以前的,需自行提供一个合适的 Dialect 类(选择合适的版本继承)
|
*
|
* 更多内容请关注该 issues:https://github.com/PowerJob/PowerJob/issues/153
|
*/
|
@Override
|
public SqlTypeDescriptor getSqlTypeDescriptorOverride(int sqlCode) {
|
return Types.CLOB == sqlCode ? LongVarcharTypeDescriptor.INSTANCE : null;
|
}
|
}
|