Konwersja UUID w JPA
package com.example.project;
import java.util.UUID;
import org.eclipse.persistence.internal.helper.DatabaseField;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.DirectCollectionMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.sessions.Session;
@SuppressWarnings("serial")
public class UUIDConverter implements Converter {
@Override
public Object convertObjectValueToDataValue(Object objectValue, Session session) {
return objectValue;
}
@Override
public UUID convertDataValueToObjectValue(Object dataValue, Session session) {
return (UUID) dataValue;
}
@Override
public boolean isMutable() {
return true;
}
@Override
public void initialize(DatabaseMapping mapping, Session session) {
final DatabaseField field;
if (mapping instanceof DirectCollectionMapping) {
field = ((DirectCollectionMapping) mapping).getDirectField();
}
else {
field = mapping.getField();
}
field.setSqlType(java.sql.Types.OTHER);
field.setTypeName(UUID.class.getCanonicalName());
field.setColumnDefinition("UUID");
}
}
package com.example.project;
import java.util.UUID;
import javax.persistence.Entity;
import org.eclipse.persistence.annotations.Convert;
import org.eclipse.persistence.annotations.Converter;
@Entity
public class Foo {
//Whatever
@Converter(name="uuidConverter", converterClass=UUIDConverter.class)
@Convert("uuidConverter")
private UUID uuid;
//Whatever
}