如何配置 Hibernate(通过 Spring Boot)为所有布尔列使用“NumericBooleanType”

Han*_*rst 3 hibernate jpa spring-boot

如何将 Hibernate 配置为对每个布尔列使用其内置类型NumericBooleanType@Type ,而不在每列上使用任何注释 ( )?

编辑:更多一点背景知识 - 目标是使用一个代码库支持 Oracle 和 Postgres,并且由于 Oracle 没有boolean类型,我想让 Postgres 像 Oracle 一样存储布尔值0/1

Sim*_*lli 6

如果您的数据库列具有数字数据类型并且实体具有布尔属性,则您无需执行任何操作。

如果这不起作用,请使用@Type注释:

@Type(type = "org.hibernate.type.NumericBooleanType")
private boolean enabled;
Run Code Online (Sandbox Code Playgroud)

或者,您可以编写一个具有自动应用功能的 JPA 转换器:

@Converter(autoApply = true)
public class FileConverter implements AttributeConverter<Boolean, Short> {

  @Override
  public Short convertToDatabaseColumn(Boolean value) {
      return value ? 1 : 0;
  }

  @Override
  public Boolean convertToEntityAttribute(Short dbData) {
      return dbData == 1;
  }
} 
Run Code Online (Sandbox Code Playgroud)