My code was working on 4.0.M5, but I ca not figure out how to make it work on
B2, I think the problem is that I am not installing my DbAdapterDetector
properly.
package com.ace.dba;
import static
org.apache.cayenne.configuration.Constants.SERVER_ADAPTER_DETECTORS_LIST;
import org.apache.cayenne.configuration.server.DbAdapterDetector;
import org.apache.cayenne.dba.postgres.PostgresSniffer;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Module;
public class PcExpressPosModule implements Module {
public void configure(Binder binder) {
//4.0.m5:
//binder.bindList(SERVER_ADAPTER_DETECTORS_LIST).before(PostgresSniffer.class).add(PcExpressPosPgDetector.class);
//4.0.b2:
binder.bindList(DbAdapterDetector.class).insertBefore(PostgresSniffer.class,
PcExpressPosPgDetector.class ); //tryes param in reverse order nothing
}
}
My PcExpressPosPgDetector:
public class PcExpressPosPgDetector extends PostgresSniffer {
public PcExpressPosPgDetector(@Inject AdhocObjectFactory objectFactory) {
super(objectFactory);
}
@Override
public DbAdapter createAdapter(DatabaseMetaData md) throws SQLException {
PostgresAdapter db = (PostgresAdapter) super.createAdapter(md);
db.setPkGenerator(new PcExpressPosUUIDPkGenerator(db));
return db;
}
}
PcExpressPosUUIDPkGenerator detects pk columns of type UUID and generates a
uuid for then,.. thats all.
Atte. Juan Manuel Díaz Lara