In my Hibernate entity class I have a Boolean that I want to be true for certain characters in a column of VARCHAR2(1)
. But my code causes a SQLException: Fail to convert to internal representation
. Can someone see what I'm doing wrong? My code is as follows:
In my entity I have:
...
private Boolean flag;
@Column(length = 1, name = "FLAG")
@Convert(converter = FlagToBooleanConverter.class)
public Boolean getFlag()
{
return flag;
}
void setFlag(Boolean flag)
{
this.flag = flag;
}
...
@Converter
class FlagToBooleanConverter implements AttributeConverter<Boolean, String>
{
@Override
public Boolean convertToEntityAttribute(String value)
{
return (value.equals("X") || value.equals("Y"));
}
@Override
public Boolean convertToDatabaseColumn(String value)
{
// My class should only read from the DB so I don't need this but I have to override it
return null;
}
}
UPDATE: Feels kind of hacky, but at the moment, to get the job down I've been using:
private String flag;
@Column(length = 1, name = "FLAG")
String getFlag()
{
return flag;
}
void setFlag(String flag)
{
this.flag = flag;
}
@Transient
public Boolean isFlag()
{
return (value.equals("X") || value.equals("Y"));
}