我有以下的表格 -Ormlite - 構造函數調用失敗時BaseDaoImpl擴展
@DatabaseTable(tableName="b", daoClass=B_DaoImpl.class)
public class B {
@DatabaseField
public String b1 ;
public B(){
// For Ormlite
}
}
@DatabaseTable(tableName="a", daoClass=A_DaoImpl.class)
public class A {
@DatabaseField
public String a1 ;
@DatabaseField(foreign=true)
public B b;
public A(){
// For Ormlite
}
}
對於這些表,相關道和DaoImpl如下
public interface A_Dao extends Dao<A, String>{}
public interface B_Dao extends Dao<B, String>{}
public class B_DaoImpl extends BaseDaoImpl<User, String> implements B_Dao {
public B_DaoImpl(ConnectionSource connectionSource) throws SQLException {
super(connectionSource, B.class);
}
}
public class A_DaoImpl extends BaseDaoImpl<User, String> implements A_Dao {
public A_DaoImpl(ConnectionSource connectionSource) throws SQLException {
super(connectionSource, A.class);
}
}
數據庫幫手如下:
public class DatabaseHelperImpl extends OrmLiteSqliteOpenHelper implements DatabaseHelper {
private A_DaoImpl aDao = null;
private B_DaoImpl bDao = null;
public B_DaoImpl getBDao() throws SQLException {
if (bDao == null) {
bDao = getDao(B.class);
}
return bDao;
}
public A_DaoImpl getA() throws SQLException {
if (aDao == null) {
aDao = getDao(A.class);
}
return aDao;
}
}
現在,當我嘗試調用 -
ADao aDao = databaseHelper.getA();
它出現了錯誤,錯誤如下:
Could not call the constructor in class class A_DaoImpl
現在,如果我沒有在A中的foriegn關鍵 - 即,如果不包含公衆B B,它工作正常。有什麼我在這裏失蹤?
非常感謝您提前。
你可以發佈整個異常。應該有該異常的原因信息?另外,你使用的ORMLite版本是什麼? – Gray 2012-04-17 02:09:38
是的,這不是關於「正確」,而是關於貢獻和最佳答案。如果沒有好的答案,那麼你應該自己回答。 – Gray 2012-04-17 03:20:03
我接受了最好的答案:)謝謝灰色。 – Koran 2012-04-17 03:30:39