姬長信(Redy)

java-休眠hbm文件中的@Convert等效项是什么?


我写了一个属性转换器.我想将其应用于实体.到目前为止,我正在遵循纯XML方法.

我找不到hbm表示法中的@Convert等效项.

一个例子将不胜感激.

可以理解的是,当我搜索此内容时,Google会在“自动将hbm文件转换为实体,反之亦然”上返回许多有关工具/方法的结果.

编辑:
现在,我怀疑hbm文件中是否有一个选项,因为这是JPA批注.

@Convert的文档说:

The Convert annotation is used to specify the conversion of a Basic
field or property. It is not necessary to use the Basic annotation or
corresponding XML element to specify the basic type.

我不确定是什么意思.在这种情况下,混合注释和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 {

        @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
 
            
            
        
//....other columns

编辑:更正了转换器代码.