我已经使用hibernate将Mysql中的Table映射到Java类。 表中的一列有“enum('YES','NO')”类型。我想使用hibernate注释将它映射到java类中的布尔值。
根据以下文件
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-value-basic
('Y','N'),('0','1')和('T','F')可以映射到布尔值。
如何将“枚举('YES','NO')映射到布尔值?
答案 0 :(得分:1)
未经测试,未编译:
public class SomeEntity {
....
public enum YesNoEnumType {
YES, NO
}
private YesNoEnumType someBooleanField;
@Column(name = "SOME_BOOLEAN_FIELD)
@Enumerated(YesNoEnumType.STRING)
private YesNoEnumType getSomeBooleanField() {
return this.someBooleanField;
}
...
答案 1 :(得分:1)
这是较老的帖子,但也许有人帮忙。我需要将String转换为布尔值并返回。
我写了一个转换器:
@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;
答案 2 :(得分:0)
这些类型都基于映射一个CHAR列。我认为可以将枚举映射到开箱即用的java枚举,但实现你想要的唯一方法可能是实现你自己的类型,即UserType的实现。