我写了一个属性转换器。我想在实体中应用它。到目前为止,我一直遵循纯XML的方法。
我在符号中找不到@Convert
的等效物。
举个例子会很好。
当我搜索此内容时,可以理解地,谷歌返回了许多关于“自动转换hbm文件和实体”的工具/方法的结果。
编辑: 现在我怀疑是否有hbm文件中的选项,因为这是JPA注释。
@Convert
的文档说:
Convert注释用于指定基本字段或属性的转换。不必使用Basic注释或相应的XML元素来指定基本类型。
我不完全确定它的意思。在这种情况下,混合注释和XML是一种选择吗?
我尝试过这个:
public class Person {
//this is enum
private Ethnicity ethnicity;
//.....
}
public enum Ethnicity{
INDIAN("IND"),
PERSIAN("PER")
//...constructors and value field.
public String value(){
return this.value;
}
public Ethnicity fromValue(String value){
//logic for conversion
}
}
转换器:
@Converter
public class EthnicityConverter implements AttributeConverter<Ethnicity,String> {
@Override
public Ethnicity convertToEntityAttribute(String attribute) {
if ( attribute == null ) {
return null;
}
return Ethnicity.fromValue( attribute );
}
@Override
public String convertToDatabaseColumn(Ethnicity dbData) {
if ( dbData == null ) {
return null;
}
return dbData.value();
}
}
HBM文件:
//....other columns
<property name="ethnicity">
<column name="ethnicity"/>
<type name="EthnicityConverter"/>
</property>
//....other columns
编辑:修正了转换器代码。
orm.xml
。如果您没有使用JPA,请删除JPA标签。 - Neil Stockton