代码之家  ›  专栏  ›  技术社区  ›  Ruslan Akhundov

指定要在JPA实体而不是类中使用的转换器的特定实例

  •  0
  • Ruslan Akhundov  · 技术社区  · 8 年前

    我在数据库中存储了一些jpa实体,它有一个字段,其中包含一些json格式的数据。

    @Convert(converter = JsonConverter.class)
    public SomeClass entities;
    

    JsonConverter smth类似于:

    @Converter(autoApply = true)
    public class JsonListConverter implements AttributeConverter<T, String> {
    
    }
    

    我想做的是向这个转换器添加一些构造函数,用一些类型(可能是state)初始化它,然后将其用于jpa转换。

    @Convert 注释(或其他注释)而不是指定类?

    1 回复  |  直到 8 年前
        1
  •  2
  •   MSS    7 年前

    可以通过编写抽象类来实现这一点 SomeAbstractClass SomeClass1 可以实现这个抽象类并添加更多细节。

    public SomeClass1 extends SomeAbstractClass{
    }
    
    public SomeClass2 extends SomeAbstractClass{
    }
    

    现在是转换器类

    @Converter(autoApply = true)
    public class JsonListConverter implements AttributeConverter<SomeAbstractClass, String> {
    @override
    public String convertToDatabaseColumn(SomeAbstractClass sac){
    // Your implementation goes here
    }
    @override
    public SomeAbstractClass convertToEntityAttribute(String s){
    
        //check to find if s can be SomeClass1
        if(checkSomeClass1(s)){ 
     // return an instance of SomeClass1
    }
        else{
    // return an instance of SomeClass2
    }
    
    
    }
    }