Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/main/java/com/j256/ormlite/db/MariaDbDatabaseType.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package com.j256.ormlite.db;

import com.j256.ormlite.field.DataPersister;
import com.j256.ormlite.field.FieldConverter;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.jdbc.CharacterCompatFieldConverter;

/**
* MariaDB database type information used to create the tables, etc.. It is an extension of MySQL.
*
Expand All @@ -25,4 +31,12 @@ protected String getDriverClassName() {
public String getDatabaseName() {
return DATABASE_NAME;
}

@Override
public FieldConverter getFieldConverter(DataPersister dataPersister, FieldType fieldType) {
if (dataPersister.getSqlType() == SqlType.CHAR)
return new CharacterCompatFieldConverter(dataPersister);

return super.getFieldConverter(dataPersister, fieldType);
}
}
5 changes: 4 additions & 1 deletion src/main/java/com/j256/ormlite/db/OracleDatabaseType.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.FieldConverter;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.jdbc.CharacterCompatFieldConverter;

/**
* Oracle database type information used to create the tables, etc..
Expand Down Expand Up @@ -100,8 +101,10 @@ public FieldConverter getFieldConverter(DataPersister dataPersister, FieldType f
if (BOOLEAN_INTEGER_FORMAT.equalsIgnoreCase(fieldType.getFormat())) {
return DataType.BOOLEAN_INTEGER.getDataPersister();
} else {
return DataType.BOOLEAN_CHAR.getDataPersister();
return new CharacterCompatFieldConverter(DataType.BOOLEAN_CHAR.getDataPersister());
}
case CHAR:
return new CharacterCompatFieldConverter(dataPersister);
default:
return super.getFieldConverter(dataPersister, fieldType);
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/j256/ormlite/db/SqlServerDatabaseType.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.j256.ormlite.field.FieldConverter;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.jdbc.CharacterCompatFieldConverter;
import com.j256.ormlite.support.DatabaseResults;

/**
Expand Down Expand Up @@ -51,6 +52,8 @@ public FieldConverter getFieldConverter(DataPersister dataType, FieldType fieldT
return booleanConverter;
case BYTE:
return byteConverter;
case CHAR:
return new CharacterCompatFieldConverter(dataType);
default:
return super.getFieldConverter(dataType, fieldType);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.j256.ormlite.jdbc;

import com.j256.ormlite.field.BaseFieldConverter;
import com.j256.ormlite.field.FieldConverter;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.support.DatabaseResults;

import java.sql.SQLException;

/**
* Some drivers do not support setObject on Character objects!
*/
public class CharacterCompatFieldConverter extends BaseFieldConverter
{
private FieldConverter wrappedConverter;

public CharacterCompatFieldConverter(FieldConverter wrappedConverter) {
this.wrappedConverter = wrappedConverter;
}

@Override
public SqlType getSqlType() {
return SqlType.CHAR;
}

@Override
public Object parseDefaultString(FieldType fieldType, String defaultStr) throws SQLException
{
Object character = wrappedConverter.parseDefaultString(fieldType, defaultStr);
if (character == null)
return null;
return character.toString(); // Convert to string
}

@Override
public Object javaToSqlArg(FieldType fieldType, Object obj) throws SQLException {
Object character = wrappedConverter.javaToSqlArg(fieldType, obj);
if (character == null)
return null;
return character.toString(); // Convert to string
}

@Override
public Object resultToSqlArg(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException {
return wrappedConverter.resultToSqlArg(fieldType, results, columnPos);
}

@Override
public Object resultToJava(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException {
return wrappedConverter.resultToJava(fieldType, results, columnPos);
}

@Override
public Object sqlArgToJava(FieldType fieldType, Object sqlArg, int columnPos) throws SQLException {
return wrappedConverter.sqlArgToJava(fieldType, sqlArg, columnPos);
}

@Override
public Object resultStringToJava(FieldType fieldType, String stringValue, int columnPos) throws SQLException {
return wrappedConverter.resultStringToJava(fieldType, stringValue, columnPos);
}

@Override
public Object makeConfigObject(FieldType fieldType) throws SQLException {
return wrappedConverter.makeConfigObject(fieldType);
}
}