是否可以将列类型映射到另一个Object属性类?

时间:2014-12-10 14:28:29

标签: java hibernate jpa mapping

我在某些表中有int / integer的列,其中0 = false,1 = true,我可以将它映射到布尔对象属性吗?

类似的东西:

   public class...
   //instead of 
   private int playeble;
   //something like
   @AwesomAnnotationConvertion(....)
   private boolean playeble;

我正在使用Hibenate,但我们将迁移到EclipseLink,所以如果确实存在,我更愿意使用标准实现。

1 个答案:

答案 0 :(得分:1)

使用@Convert@Converter

public class YourEntity {
    @Convert(converter=BooleanOneZeroConverter.class)
    private Boolean playable;
}

@Converter
public class BooleanOneZeroConverter implements AttributeConverter<Boolean, Integer> {
    private static final Integer TRUE_VALUE = 1;
    @Override
    public Integer convertToDatabaseColumn(Boolean value) {
        //1 is true, 0 is false
        return Boolean.TRUE.equals(value) ? 1 : 0;
    }
    @Override
    public Boolean convertToEntityAttribute(Integer value) {
        return TRUE_VALUE.equals(value);
    }
}

请注意,上述代码适用于JPA 2.1。