UUIDType.java
package com.github.mygreen.sqlmapper.core.type.standard;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.UUID;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.type.ValueType;
/**
* 文字列型を{@link UUID} 型のマッピングを処理します。
* <p>DB側がUUID型に対応していない場合、永続化する際に文字列に変換して対応します。
*
*
* @author T.TSUCHIE
*
*/
public class UUIDType implements ValueType<UUID> {
@Override
public UUID getValue(ResultSet rs, int columnIndex) throws SQLException {
Object value = rs.getObject(columnIndex);
return value != null ? UUID.fromString(value.toString()) : null;
}
@Override
public Object getSqlParameterValue(UUID value) {
/*
* UUIDのオブジェクト型を使用する場合
* ・PostgreSQLの場合は、OTHERで型指定が必要。
* ・H2DBの場合は、逆にOTHER指定でエラーが出るため、何も指定しない。
*/
return value != null ? value.toString() : null;
}
@Override
public int getSqlType(Dialect dialect) {
return Types.VARCHAR;
}
}