我在我的项目中使用 Spring Boot + Spring Data + Postgresql + Kotlin。
默认情况下,JPA 使用 varchar(255) 作为字符串字段,因此我需要为所有字符串列添加 @Column(columnDefinition = "TEXT")。
当我不添加@Column时,有什么方法可以默认为String设置TEXT?
目前还没有办法做到这一点。
您必须使用
@Lob
或 @Column(columnDefinition="TEXT")
。
更多信息在这里 - https://www.baeldung.com/jpa-annotation-postgresql-text-type
您可以通过指定自定义 PostgreSQL 方言来实现此目的:
import org.hibernate.boot.model.TypeContributions;
import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.type.SqlTypes;
import org.hibernate.type.descriptor.sql.internal.DdlTypeImpl;
public class CustomPostgreSQLDialect extends PostgreSQLDialect {
@Override
protected void registerColumnTypes(
TypeContributions typeContributions,
ServiceRegistry serviceRegistry
) {
super.registerColumnTypes(typeContributions, serviceRegistry);
var ddlTypeRegistry = typeContributions
.getTypeConfiguration()
.getDdlTypeRegistry();
ddlTypeRegistry.addDescriptor(
new DdlTypeImpl(SqlTypes.VARCHAR, "text", this)
);
}
}
然后在
application.properties
中设置这个值:
spring.jpa.properties.hibernate.dialect=your.package.CustomPostgreSQLDialect