我为ORMLITE创建了以下代码行来创建dao(数据访问对象)。我试图通过为不同的数据库表/实体编写相同的语句来避免重复所有实体。
Uri uri = new Uri("http://ip:8000/PokusWPF/CalculatorService");
var address = new EndpointAddress(uri);
var client = new CalculatorClient();
client.Endpoint.Address = address;
client.Open();
如何创建一个接受我拥有的任何实体并返回正确的entityDao对象的方法。
这样我就可以结合逻辑
Dao<Entity, String> entityDao = DaoManager.createDao(connectionSource,Entity.class);
和
Dao<UserEntity, String> userEntityDao = DaoManager.createDao(connectionSource,UserEntity.class);
我尝试过以下方法:
Dao<AccountEntity, String> accountEntityDao = DaoManager.createDao(connectionSource,AccountEntity.class);
但不幸的是我收到了以下错误:
private Dao<?, String> createDAO(Class<?> dataClass) throws SQLException{ // instantiate the dao return DaoManager.createDao(connectionSource, dataClass); }
答案 0 :(得分:1)
您需要在T
方法中添加泛型类型参数createDAO
:
private <T> Dao<T, String> createDAO(Class<T> dataClass) throws SQLException {
return DaoManager.createDao(connectionSource, dataClass);
}
如果你看一下DaoManager.createDao
的定义,你会发现它是以类似的,虽然更复杂的方式定义的:
public static <D extends Dao<T,?>,T> D createDao(ConnectionSource connectionSource,
Class<T> clazz) throws SQLException