JPA Attribute Converter: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 35: Line 35:
public class PayloadConverter implements AttributeConverter<Payload, String> {
public class PayloadConverter implements AttributeConverter<Payload, String> {


    @Override
  @Override
    public String convertToDatabaseColumn(Payload attribute) {
  public String convertToDatabaseColumn(Payload attribute) {
      ...
    ...
    }
  }


    @Override
  @Override
    public Payload convertToEntityAttribute(String dbData) {
  public Payload convertToEntityAttribute(String dbData) {
      ...
    ...
  }
  }
}
}
</syntaxhighlight>
</syntaxhighlight>

Revision as of 20:24, 31 October 2018

External

Internal

Overview

An attribute converter allows the developer to specify methods to convert between the database and the Java representation of an attribute.

Playground Example

https://github.com/ovidiuf/playground/tree/master/spring/jpa/attribute-converter

Programming Model

@Convert Annotation

Annotate the entity fields to be converter with @javax.persistence.Convert:

@Convert(converter = PayloadConverter.class)
private Payload payload;

The Converter Class

Provide a converter class, which must implement AttributeConverter<Entity-Field-Type, Database-Type> and be annotated with @javax.persistence.Converter:

@Converter
public class PayloadConverter implements AttributeConverter<Payload, String> {

  @Override
  public String convertToDatabaseColumn(Payload attribute) {
     ...
  }

  @Override
  public Payload convertToEntityAttribute(String dbData) {
     ...
  }
}