Veit's Blog

Hej! đź‘‹ Welcome to my curated space of insights on software development and the tapestry of life.

JPA 2.1 and UUID

2015-04-12

Recently I came over to map a table in a Postgres Database that contains a UUID Column. With JPA 2.1 there is a very simple way to map this column to the java.util.UUID-Field in the entity:

At first you need a AttributeConverter:

/**
 * Converter for use with UUID and Postgres
 */
@Converter(autoApply = true)
public class UuidConverter implements AttributeConverter<UUID, UUID> {
    /**
     * Convert entity field to db column value
     *
     * @param attribute field
     * @return UUID of entity
     */
    @Override
    public UUID convertToDatabaseColumn(UUID attribute) {
        return attribute;
    }

    /**
     * Convert db column value to entity field
     *
     * @param dbData column
     * @return UUID of entity
     */
    @Override
    public UUID convertToEntityAttribute(UUID dbData) {
        return dbData;
    }
}

And now just add this Converter to your Entity-Fields with the @Column-Annotation:

@Column(name = "guid", columnDefinition = "UUID", updatable = false, insertable = false)
private UUID uuid;