java - 将 Mysql 中的 enum ('YES' , 'NO' ) 列映射到 hibernate 中的 boolean 值

标签 java mysql hibernate hibernate-mapping

我已经使用 hibernate 将 Mysql 中的表映射到 Java 类。 表中的一列的类型为“enum('YES', 'NO')”。我想使用 hibernate 注释将其映射到 java 类中的 boolean 值。

根据下面的文档
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-value-basic
('Y', 'N'), ('0', '1') 和 ('T', 'F') 可以映射为 boolean 值。
如何将“enum('YES', 'NO') 映射到 boolean 值?

最佳答案

这是较旧的帖子,但也许有人会帮忙。我需要将字符串转换为 boolean 值并返回。

我写了一个转换器:

@Converter(autoApply = true)
public class BusinessEnvironmentConverter implements AttributeConverter<Boolean, String> {
    enum BusinessEnvironment { TEST, PRODUCTION }

    @Override
    public String convertToDatabaseColumn(final Boolean production) {
        return production ? BusinessEnvironment.PRODUCTION.name(): BusinessEnvironment.TEST.name();
    }

    @Override
    public Boolean convertToEntityAttribute(final String dbField) {
        final BusinessEnvironment businessEnvironment = BusinessEnvironment.valueOf(dbField);
        return businessEnvironment.equals(BusinessEnvironment.PRODUCTION) ? TRUE : FALSE;
    }
}

并使用它:

@Column(name=PRODUCTION, nullable=false)
@Convert(
        converter=BusinessEnvironmentConverter.class,
        disableConversion=false
)
private boolean production;

关于java - 将 Mysql 中的 enum ('YES' , 'NO' ) 列映射到 hibernate 中的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19317662/

相关文章:

java - 在 createNativeQuery 中使用generate_series时出错

mysql - Hibernate Criteria 查询中按月分组

java - 没有代码生成可以使用JOOQ吗?

java - 如何在android中使用imageloader释放位图内存?

mysql - SQL Select SUM() 组函数使用无效

mysql - 按集合中最多标签排序

mysql - 替换 select 语句中的值

java - Hibernate-Mysql QuerySyntaxException 异常

java - 尝试将 ArrayList 传递给另一个类时出现 NullPointerException

java - 如何获取跨对象中字符的索引?