I suggest you use a converter.
This is the cleanest solution I have come to, because:
:
@Column(name = "status", nullable = false)
@Convert(converter = MemberStatusEnumConverter.class)
private MemberStatus status;
:
public enum MemberStatus {
PASSIVE,
ACTIVE;
}
MemberStatusEnumConverter:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter
public class MemberStatusEnumConverter implements
AttributeConverter<MemberStatus,Integer>{
@Override
public Integer convertToDatabaseColumn(MemberStatus attribute) {
switch (attribute) {
case PASSIVE:
return new Integer(0);
case COUNTYLEVEL:
return new Integer(1);
default:
throw new IllegalArgumentException("Unknown" + attribute);
}
}
@Override
public MemberStatus convertToEntityAttribute(Integer dbData) {
if (dbData == 0){
return MemberStatus.PASSIVE;
} else if (dbData == 1){
return MemberStatus.ACTIVE;
}
else{
throw new IllegalArgumentException("Unknown" + dbData);
}
}
}
, .