I have a problem with querying Derby database. I am using Hibernate with JPA. Problem is related (probably) to boolean columns. Each query ends with error:
org.h
Used Rafal's approach but also have to add
@Override
public String toBooleanValueString(boolean bool) {
return bool ? "1" : "0";
}
in my Dialect. Otherwise it doesn't work under Hibernate 4.2.8.
Also I wasn't be able to specify my dialect explicitly in persistence.xml as my app runs against Oracle and Derby. So I've added a dialect resolver for my dialect:
Resolver itself:
public class DerbyBoolAsIntDialectResolver extends AbstractDialectResolver {
@Override
protected Dialect resolveDialectInternal(DatabaseMetaData metaData) throws SQLException {
String databaseName = metaData.getDatabaseProductName();
int databaseMajorVersion = metaData.getDatabaseMajorVersion();
if ( "Apache Derby".equals( databaseName ) ) {
final int databaseMinorVersion = metaData.getDatabaseMinorVersion();
if ( databaseMajorVersion > 10 || ( databaseMajorVersion == 10 && databaseMinorVersion >= 7 ) ) {
return new DerbyBoolAsIntDialect();
}
}
return null;
}
}